小编Arj*_*jan的帖子

Boost Python中的交叉模块依赖关系

假设我有两个boost python模块,定义如下.模块A:

class SomeClass {
public:
    SomeClass() {}
    ~SomeClass() {}
};
BOOST_PYTHON_MODULE(A)
{   
    class_<SomeClass>("SomeClass");
}
Run Code Online (Sandbox Code Playgroud)

和模块B:

class AnotherClass {
public:
    AnotherClass() {}
    ~AnotherClass() {}
    void func(SomeClass& sp) {}
};
BOOST_PYTHON_MODULE(B)
{   class_<AnotherClass>("AnotherClass")
        .def("func", &AnotherClass::func)
    ;
}
Run Code Online (Sandbox Code Playgroud)

模块B依赖于模块A(即它使用SomeClass模块A).现在,我执行以下python脚本:

import A
import B
obj1 = A.SomeClass()
obj2 = B.AnotherClass()
obj2.func(obj1)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "C:\bladiebla\script.py", line 8, in <module>
    obj2.func(obj1)
ArgumentError: Python argument types in
AnotherClass.func(AnotherClass, SomeClass)
did not match C++ signature:
func(class AnotherClass {lvalue}, class SomeClass) …
Run Code Online (Sandbox Code Playgroud)

c++ python boost extension-modules

7
推荐指数
2
解决办法
2196
查看次数

标签 统计

boost ×1

c++ ×1

extension-modules ×1

python ×1