用石博肯生成C++库Python绑定
我在维基上跟进了教程 但我不能让它正常工作。我在MacOSX上 到目前为止,我所做的是: 构建傻瓜库静态-->lib傻瓜库.a 创建typesystem_foo.xml 使用以下命令运行shiboken: shiboken-2.7 global.h-包含路径=。:/opt/local/include/PySide-2.7:/opt/local/include-typesystem路径=/opt/local/share/PySide-2.7/typesystems-输出目录=../foulibbinding typesystem\u foo.xml用石博肯生成C++库Python绑定,python,c++,qt,pyside,python-bindings,Python,C++,Qt,Pyside,Python Bindings,我在维基上跟进了教程 但我不能让它正常工作。我在MacOSX上 到目前为止,我所做的是: 构建傻瓜库静态-->lib傻瓜库.a 创建typesystem_foo.xml 使用以下命令运行shiboken: shiboken-2.7 global.h-包含路径=。:/opt/local/include/PySide-2.7:/opt/local/include-typesystem路径=/opt/local/share/PySide-2.7/typesystems-输出目录=../foulibbi
从生成的C++代码-LIB中生成WiBiB绑定动态库。
现在,不是从命令行运行Python解释器,而是编写了一个C++程序,它加载Python解释器,并使用WaMIB打开.py.脚本。这个程序动态链接lib傻瓜ibbinding.dylib,所以我猜傻瓜ib模块工作所需的所有符号都在那里
代码如下:#include <iostream>
#include <Python.h>
int main(int argc, char* argv[])
{
///Python init
Py_SetProgramName(argv[0]);
Py_Initialize();
PySys_SetArgv(argc, argv); /// relative module import
///Try out loading the module, this is just for testing
/// -----------
PyObject *sysPath = PySys_GetObject("path");
PyObject *path = PyString_FromString("/Users/alexandre/Downloads/BindingTest");
int result = PyList_Insert(sysPath, 0, path);
PyObject *pModule = PyImport_ImportModule("foolib");
if (PyErr_Occurred())
PyErr_Print();
/// -----------
///Our python file to interpret
const char* filename = "/Users/alexandre/Downloads/BindingTest/FooLibTest/foolib_test.py";
FILE* file = fopen(filename,"r");
PyRun_SimpleFile(file,filename);
///close python
Py_Finalize();
return 0;
}
运行程序时,如果第一次尝试加载模块时失败,说明:
ImportError:没有名为“”的模块
然后第二次运行.py脚本时:
Traceback (most recent call last):
File "/Users/alexandre/Downloads/BindingTest/FooLibTest/foolib_test.py", line 1, in <module>
from foolib import FooClass
ImportError: No module named foolib
因此,显然它找不到从绑定生成的模块。我的问题是我应该怎么做才能让它找到它
本教程使用了一个Makefile,但似乎除了链接绑定动态库之外没有做更多的事情。Shiboken命令行的include路径不包括foo.h的路径。我不知道这是否是问题的原因,但如果我这样做,它将不会生成以下文件: math_wrapper.cpp 数学包装器 …您显然需要能够编译对foo库中数学类的支持