ctypes Python动态函数调用

时间:2015-12-14 23:29:00

标签: python c

我在Python中编写一个测试脚本,使用ctypes ctypes - Beginner

调用C函数

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

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

Python脚本:

defaultConfig {
    applicationId "your.package.name"
}

C代码:

import ctypes
import os

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

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

然而,在尝试使用变量加载函数名时会抛出错误:

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

#include < stdio.h>

void printHello(void);

void printHello()
{
    printf("hello world\n");
}

错误: &#34;完整路径&#34; /sharedObject.so:unfined defined symbol:fName

非常感谢任何帮助和建议!谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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