Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
包装C++;使用SWIG的python代码。Can';不要使用cout命令 我试图用Syg:< /P>为Python包装这个简单的C++代码。 #include "hello.h" int helloW() { std::cout << "Hello, World!" ; return 0; }_Python_C++_Swig_Iostream_Word Wrap - Fatal编程技术网

包装C++;使用SWIG的python代码。Can';不要使用cout命令 我试图用Syg:< /P>为Python包装这个简单的C++代码。 #include "hello.h" int helloW() { std::cout << "Hello, World!" ; return 0; }

包装C++;使用SWIG的python代码。Can';不要使用cout命令 我试图用Syg:< /P>为Python包装这个简单的C++代码。 #include "hello.h" int helloW() { std::cout << "Hello, World!" ; return 0; },python,c++,swig,iostream,word-wrap,Python,C++,Swig,Iostream,Word Wrap,现在,我的makefile(运行良好)是: 因为我能够从不同的来源收集到与在线问题相关的信息。 现在,一旦我尝试在python中导入我的库,就像使用命令一样 >>> import pyhello 这是我得到的错误: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "pyhello.py", line 17, in <module

现在,我的makefile(运行良好)是:

因为我能够从不同的来源收集到与在线问题相关的信息。 现在,一旦我尝试在python中导入我的库,就像使用命令一样

>>> import pyhello
这是我得到的错误:

    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pyhello.py", line 17, in <module>
    _pyhello = swig_import_helper()
  File "pyhello.py", line 16, in swig_import_helper
    return importlib.import_module('_pyhello')
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: ./_pyhello.so: undefined symbol: _ZSt4cout
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“pyhello.py”,第17行,在
_pyhello=swig\u import\u helper()
swig\u import\u helper中第16行的文件“pyhello.py”
返回importlib.import\u模块(“\u pyhello”)
文件“/usr/lib/python2.7/importlib/_init_uuu.py”,第37行,在导入模块中
__导入(名称)
导入错误:./\u pyhello.so:未定义的符号:\u ZSt4cout
这让我觉得这个问题与命令std::cout有关,或者,一般来说,与标准库有关

希望有人能给我一些关于这个问题的建议。非常感谢

注意:我尝试使用命令
printf()
而不是
std::cout
和库
而不是

ImportError:./\u pyhello.so:未定义的符号:
\u ZSt4cout

使用
c++filt_ZSt4cout
您会发现它是
std::cout
()

您应该使用
g++
,而不是
gcc
,尤其是在链接器命令中(使用
-shared

或者您需要显式地链接到共享库中的一些
-lstdc++

阅读Drepper的(因为Python正在使用它)


最好声明为
extern“C”inthellow(void)例程(读取)。

这是正确的,但是不需要做<代码> Hele< /Calp> <代码>外“C”<代码>,只要PyelLoLoWrAP.Cxx和Helo.CPP都用C++编译器编译。(Python永远不会直接调用
dlsym(“helloW”,…)
,调用它的SWIG生成的函数是静态的)
all:
    swig -c++ -python -Wall pyhello.i 
    gcc -c -fpic pyhello_wrap.cxx hello.cpp -I/usr/include/python2.7
    gcc -shared hello.o pyhello_wrap.o -o _pyhello.so
>>> import pyhello
    Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "pyhello.py", line 17, in <module>
    _pyhello = swig_import_helper()
  File "pyhello.py", line 16, in swig_import_helper
    return importlib.import_module('_pyhello')
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
ImportError: ./_pyhello.so: undefined symbol: _ZSt4cout