编译.cpp和执行.py在命令行上进行得很好,但是当我将所有文件复制到IDE(在我的例子中是PyCharm)并从那里运行代码时,我得到了一个错误:
Traceback (most recent call last):
File ".../test/wrapper.py", line 26, in <module>
test = ctypes.CDLL('library.so').foo_bar_function(a, b)
File "...\AppData\Local\Programs\Python\Python36\lib\ctypes\__init__.py", line 348, in __init__
self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] The specified module was not found
我已经尝试指定图书馆.so,没有运气。在
我知道有一些工具集Boost.Python可以帮助用c/c++函数扩展python的库。但是由于函数不需要任何特殊的东西,只是“静态”方法,而且非常简单,所以我想我不必经历这些麻烦。我的函数所要做的就是从python获取一些数组,用简单的操作操作数组并返回一个int
我所做的:
创建了两个文件:
…/测试/函数.cpp …/测试/包装器.py
在函数.cpp公司名称:
^{pr2}$以及包装器.py在
import ctypes
py_a = [10,5,6,2,1,1,1,6,3,1]
c_a = (ctypes.c_float * len(py_a))(*py_a)
py_b = [1,1,2]
c_b = (ctypes.c_int * len(py_b))(*py_b)
test = ctypes.CDLL('library.so').foo_bar_function(c_a, c_b)
print(test)
然后我跑了:
...\test> g++ -shared -c -fPIC function.cpp -o function.o
...\test> g++ -shared -Wl,-soname,library.so -o library.so function.o
...\test> python wrapper.py
0 (expected output from c++ function)
所以在命令内一切如期进行。在
我还能试试什么?在
目前没有回答
相关问题 更多 >
编程相关推荐