我有一个C++类库,有以下命名空间和类:
namespace avdecc_lib
{
class net_interface;
class controller;
class system
{
public:
enum system_type
{
LAYER2_MULTITHREADED_CALLBACK,
};
}
extern "C" AVDECC_CONTROLLER_LIB32_API system * STDCALL create_system(system::system_type type, net_interface *netif, controller *controller_obj);
我想在Python中对ctypes使用以下调用:
^{pr2}$我试了一下但没有成功:
self.avdecc_lib = cdll.LoadLibrary("path/to/lib.so")
self.sys = self.avdecc_lib.create_system(self.avdecc_lib.system.LAYER2_MULTITHREADED_CALLBACK,self.netif,self.controller_obj)
库已经加载并且对象生成成功,但是我没有指出函数调用出了什么问题。在
如何访问avdecc_lib::system::LAYER2_MULTITHREADED_CALLBACK
?在
枚举常量不是从库中导出的,因此无法在运行时找到它们。您唯一的选择是根据标题确定数值。如果该常量尚未显式赋值,则它比上一个常量多1个,如果它是枚举中的第一个常量,则为0。在
顺便说一下,您的函数是用STDCALL调用约定声明的,但是cdll使用CDECL调用约定。您需要使用windell来正确调用函数。在
相关问题 更多 >
编程相关推荐