ctypes Python动态函数

2024-06-28 11:14:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Python编写一个测试脚本,用ctypesctypes - Beginner调用C函数

我有一个函数列表和相应的共享对象名,需要使用python脚本动态调用这些函数。在

虽然我使用它直接调用Python脚本中的函数名,但它工作得很好,并在终端上打印“hello world”!在

Python脚本:

import ctypes
import os

sharedObjectPath = (os.getcwd() + "/" + "sharedObject.so")

test = ctypes.CDLL(sharedObjectPath)
test.printHello()

C代码:

^{pr2}$

但是在尝试使用变量加载函数名时,它会抛出一个错误:

Python脚本:(动态函数调用)

import ctypes
import os

sharedObjectPath = (os.getcwd() + "/" + "sharedObject.so")

test = ctypes.CDLL(sharedObjectPath)
fName = "printHello()"
test.fName

错误: “完整路径”/共享对象.so:未定义符号:fName

如有任何帮助和建议,我们将不胜感激!谢谢!在


Tags: 对象函数testimport脚本soos动态
1条回答
网友
1楼 · 发布于 2024-06-28 11:14:49

要使用函数的名称作为字符串调用函数,可以这样做

...    
fName = "printHello"
test[fName]()

因此,函数名(减去())用于索引到模块对象,然后调用它。在

相关问题 更多 >