class A{
A();
void a();
virtual void v();
}
把这个交给利巴索你知道吗
class B : A {
B();
void b();
void v();
}
extern "C" {
A* newB() {
return new B();
}
void calla(A*b) {
b->a();
}
void callv(A*b) {
b->v();
}
}
把这个交给libb.so公司你知道吗
在python中:
from ctypes import cdll
lib = cdll.LoadLibrary('./libb.so')
class B(object):
def __init__(self):
self.obj = lib.newb()
def a(self):
lib.calla(self.obj)
def v(self):
lib.callv(self.obj)
b = B()
b.a() # call base class function, that's ok
b.v() # call derive class virtual function , segment fault!
这是否意味着python不能使用包含继承逻辑的dll?你知道吗
似乎python不能调用c++类,因为它的函数入口改变了bc继承逻辑,有人能谈谈这个吗?你知道吗
谢谢
注意事项:
我准备了一个完整的(和虚拟的)例子来说明这种行为。你知道吗
a.h.:
a.cpp(美国药典):
b.h.:
b.cpp:
代码.py:
输出:
相关问题 更多 >
编程相关推荐