python 调用C 动态库 提示can not find symbol
来源:互联网 发布:小米盒子电视直播软件 编辑:程序博客网 时间:2024/05/18 04:53
因为算法效率问题所以要在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
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;
}
一切正常
- python 调用C 动态库 提示can not find symbol
- Gradle: error: can not find symbol
- OMNeT++ 4.2.2 can not find symbol in index
- 如何排查can not find symbol的编译错误
- ubuntu找不到动态链接库 can not find openBLAS.so
- python 调用C++动态库所遇到的undefined symbol ***
- python 调用 C 动态库
- python 调用 C 动态库
- QT5提示can not find -lGL的解决方法
- QT5提示can not find -lGL的解决方法
- QT5提示can not find -lGL的解决方法
- ubuntu下qt5提示can not find -lGL
- QT5提示can not find -lGL的解决方法
- QT5提示can not find -lGL的解决方法
- QT5提示can not find -lGL的解决方法
- QT5提示can not find -lGL的解决方法
- can not resolve symbol R
- can not resolve symbol R
- Python函数式编程指南(一):概述
- CollabNet Teamforge 强制密码设置
- 在JSP导出EXCEL(HTML格式)出现乱码
- Python函数式编程指南(二):函数
- 自定义 半透膜遮罩
- python 调用C 动态库 提示can not find symbol
- hcid 分析
- 为什么类型参数不能作为静态变量的类型
- Python函数式编程指南(三):迭代器
- c#中传说的字典(Directory)
- Android网络编程原理及HttpURLConnection 用法
- C/C++静态库与动态库
- js获取Html元素的实际宽度高度
- Python函数式编程指南(四):生成器