C++编译使用Python.h时出现未定义符号

2024-06-26 13:00:27 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我一直在尝试使用Python.h来完成一个我想做的小项目,这个项目看起来很漂亮/简单/。但在开始之前,我想先学习如何使用Python.h。 所以我在网上找到了这个小例子。在

#include "Python/Python.h"  

int main(int argc, char** argv)  
{  
    Py_Initialize();  
    PyRun_SimpleString("print 'Test'");  
    PyRun_SimpleString("print str(3 + 5)"); 
    Py_Exit(0);  
}

看起来挺直截了当的。当我第一次使用

^{pr2}$

为了编译,我得到了一些未定义的符号。我很快发现我应该用

-lpython2.7

然后我发现我也可以用

-L/Library/Frameworks/Python.framework/Versions/2.7/lib/

这不起作用(我确保/Library/Frameworks/Python/Versions/2.7/lib/存在) 我卡住了,我该怎么办? 我明白了

Undefined symbols:
  "_Py_Initialize", referenced from:
      _main in ccoUOSlc.o
  "_PyRun_SimpleStringFlags", referenced from:
      _main in ccoUOSlc.o
      _main in ccoUOSlc.o
  "___gxx_personality_v0", referenced from:
      _main in ccoUOSlc.o
      CIE in ccoUOSlc.o
  "_Py_Exit", referenced from:
      _main in ccoUOSlc.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

编辑: 我只是尝试使用-Framework参数,并尝试在-L后面添加-L python2.7参数,现在我得到

Undefined symbols:
  "___gxx_personality_v0", referenced from:
      _main in ccfvtJ4j.o
      CIE in ccfvtJ4j.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

现在呢?在


Tags: 项目infrompymainlibraryexitpyrun
1条回答
网友
1楼 · 发布于 2024-06-26 13:00:27

如果您使用的是OS X上的Python框架安装,因为它看起来是基于路径的,那么可以对Apple编译器驱动程序使用-framework参数:

cc test.cpp -framework Python

或者,可以显式指定目录路径和库名称:

^{pr2}$

更新:根据您在注释(Xcode 3.2.6gcc-4.2)中报告的配置,您似乎需要显式地调用c++变体gcc。或者:

g++ test.cpp -framework Python

或者

c++ test.cpp -framework Python

应该行得通。在

相关问题 更多 >