使用numpy.ctypeslib.load_library时出错

时间:2018-07-03 21:09:20

标签: python c++ linker

我有这个prog.cpp程序:

#include <iostream>

using namespace std;

int main(int argc, char** argv){
    printf("hello world\n");
    return 0;
}

我有这个prog.py程序,应将main加载到python函数中:

import subprocess
import numpy.ctypeslib as npct

subprocess.call(['gcc', '-Wall','-c', '-fPIC', 'prog.cpp', '-o', 'prog.o'])
subprocess.call(['gcc', 'prog.o', '-shared', '-o', 'lib_prog.so'])

lib = npct.load_library('lib_prog', '.')
fun = getattr(lib,'main')
fun()

但是我遇到以下错误:

Traceback (most recent call last):
  File "prog.py", line 7, in <module>
    lib = npct.load_library('lib_prog', '.')
(...)
OSError: /my_dir/lib_prog.so: undefined symbol: _ZSt4cout

我的程序似乎与任何有关如何使用numpy.ctypeslib.load_library的示例相同。有人会对发生的事情有任何见解吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我发现here所需要做的就是在extern "C"之前添加int main...

从现在开始可能对任何人都有帮助。