用石博肯生成C++库Python绑定

用石博肯生成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

我在维基上跟进了教程 但我不能让它正常工作。我在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++代码-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库中数学类的支持