我正在使用Python的cype调用Linux上的英特尔处理器跟踪库(libipt)。库中的一个初始化函数pt_config_init()在intel pt.h头文件中定义为静态内联函数。当我试图从Python代码调用此函数时,它会抛出以下错误:
libipt.pt_config_init(byref(config))
File "/usr/lib64/python3.5/ctypes/__init__.py", line 355, in __getattr__
func = self.__getitem__(name)
File "/usr/lib64/python3.5/ctypes/__init__.py", line 360, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: /lib64/libipt.so.1.4.0: undefined symbol: pt_config_init
这是有意义的,因为函数不是编译到库中的,而是通过在相关的C源代码中包含头文件来访问的。有没有一种方法可以用ctypes调用这样的内联函数,如果是,如何调用?有没有建议的解决办法?在
不,不可能。在
这个函数不仅没有被你的库导出,它根本不可能存在!在
当编译器决定值得内联时(关键字只是建议) 函数体被复制/粘贴在未定义内联时通常调用的所有位置。在
相关问题 更多 >
编程相关推荐