|
|
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 如果有点过时,会很有帮助。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |