是否可以从C++头文件中包含CGuID+SWIG+Python Auto.

2024-09-19 23:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习使用SWIG和CGUP的Python C++模块。在

看看“UseSWIG”文档,似乎有可能让CMake自动包含在我简单的“hello world”测试中的。但是,到目前为止,如果不将%include std_string.i添加到我的hello.i'文件中,我就无法成功地完成它

在我的CMakeLists.txt文件公司名称:

SET_SOURCE_FILES_PROPERTIES(hello.i PROPERTIES SWIG_FLAGS "-modern")
SET_SOURCE_FILES_PROPERTIES(hello.i PROPERTIES SWIG_FLAGS "-builtin")
SET_SOURCE_FILES_PROPERTIES(hello.i PROPERTIES SWIG_FLAGS "-modernargs")
SET_SOURCE_FILES_PROPERTIES(hello.i PROPERTIES SWIG_FLAGS "-includeall")
SET_SOURCE_FILES_PROPERTIES(hello.i PROPERTIES SWIG_FLAGS "-importall")
SET_SOURCE_FILES_PROPERTIES(hello.i PROPERTIES SWIG_FLAGS "-py3")

然后,库看起来编译得很好,而不必添加%include std_string.i。但是,尝试在python中使用内置模块将导致:

^{pr2}$

我想知道是否有人愿意提供一个简短的例子,说明可能遗漏了什么。在

或者,实际上有必要在“hello.i”中包含“std\u string.i”,而不管是否在我的c++头中包含<string>?在

(如果没有这两个中的任何一个,make将如预期的那样,声明找不到{}。)


Tags: 模块文件文档sourcehellostringincludefiles
1条回答
网友
1楼 · 发布于 2024-09-19 23:32:52

std_string.i包含SWIG理解std::string所需的类型映射。如果包装使用std::string的函数,则必须将其包含在.i文件中,否则SWIG只会为它不理解的对象生成不透明的包装器(例如Swig Object of type 'std::string *')。在

注意您通常不想使用-includeall或{}。通常不希望递归地为包含的每个类和函数生成SWIG包装器。在

相关问题 更多 >