当前位置:编程学习 > python >>

python 调用C 动态库 提示can not find symbol

因为算法效率问题所以要在python中调用C, 
先写一个C函数:
cc.cpp:
int ts(int a, int b) {
    return a * b;
}
编译 :
 g++ -c -fPIC cc.cpp
 g++ -shared cc.o -o libcc.so
然后在python中调用ts函数:
ts.py:
from ctypes import *
import os www.zzzyk.com
libcc = cdll.LoadLibrary(os.getcwd() + '/libcc.so')
print libcc.ts(2,3)
运行:
python ts.py
出错:******can not find symbol ts
谷歌了一下,发现是因为c++编译后的文件会把函数名改名(为了实现重载功能)
用extern "C"声明后,就会使用c的方式进行编译,编译后的文件中仍然是定义的函数名
所以只要讲c库中的代码改为:
extern "C"{
    int ts(int, int);
}
int ts(int a, int b) {
    return a * b;
}
补充:Web开发 , Python ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,