![]() |
1
5
|
![]() |
2
8
您可以通过inline::c从其他库调用代码(也可能通过inline::cpp调用相同的代码)-请看一下 Inline::C::Cookbook . 最有可能的情况是,您希望从inline开始,并在试验完成后,使用生成的.xs文件进一步工作。 |
![]() |
3
4
首先,它需要在动态库中,而不是静态库中(除非您将重新编译Perl本身并将其链接到静态库中)。 第二,因为C++会把名字(一个最讨厌的“C++”特性之一,如果你问我),你需要一个包含钩子函数的外部“C”块。如果您使用C++,则可以使用单个钩子函数来返回实现需要使用的接口的C++对象。因为您使用的是Perl,所以可能需要将对象包装在这样的接口中: CPPObject object; extern "C" { int InitObject( void ) { return object.init(); } int DoCoolStuff( void ) { return object.DoCoolStuff(); } int DoOtherCoolStuff( int foo ) { return object.DoOtherCoolStuff( foo ); } int DestroyObject( void ) { return object.Destroy(); } } |
![]() |
4
2
您需要创建一个可从Perl调用的包装函数,而afaik,您需要让这个包装函数位于动态库中(除非您要重建Perl二进制文件并将静态库链接到它)。我喜欢用一种叫做 SWIG (简单的包装接口生成器)为我创建包装。它也可以为17种语言或其他语言创建包装器。 |
![]() |
5
1
可能不是你所想的,而是写一个独立的C++程序,Perl程序通过管道与它通信? |
![]() |
6
0
我只是开始把我的头缠在XS上,所以我不能提供太多帮助。但我知道的是… 有 XSpp ,这是C++的XS。它与 WxPerl . WXperl正在积极响应的发展中。 inline:cpp可用于编写初始接口/包装器代码。然后您可以分析生成的XS。不过,它看起来维护得不太好。如果它起作用,可能会给你一个良好的开端。 你可能会发现 this short note on XS and C++ by John Keiser 如果有点过时,会很有帮助。 |
![]() |
Manny · 如何比较Perl中的字符串? 2 年前 |
![]() |
BioRod · 我不能用Perl打印键和值 2 年前 |
![]() |
user17227456 · Perl CLI代码无法追加字符串行 2 年前 |
![]() |
LearnToBeBetter · 读取文件,搜索字符串,打印字符串 3 年前 |
![]() |
KJ7LNW · 一些波斯语文本的宽字符印刷,但其他文本则没有 3 年前 |
![]() |
con · 如何搜索大型数据结构并返回一系列给出特定值的键/数组? 3 年前 |
![]() |
Pranay Nanda · 使用regex解析许可证文件 7 年前 |