我正在尝试将Python脚本嵌入到C ++应用程序中。在我做这样的事情之前,我正在尝试运行示例脚本。
这是我的代码:
#include <Python/Python.h>
int main(int argc, char *argv[]) {
Py_Initialize();
PyRun_SimpleString("from time import time,ctime\n"
"print 'Today is',ctime(time())\n");
Py_Finalize();
return 0;
}
使用g ++编译给我:
Undefined symbols:
"_Py_Initialize", referenced from:
_main in cc2Ogphq.o
"_PyRun_SimpleStringFlags", referenced from:
_main in cc2Ogphq.o
"_Py_Finalize", referenced from:
_main in cc2Ogphq.o
ld: symbol(s) not found
我正在运行Mac OSX Snow Leopard并且我正在运行Python 2.7.2。
答案 0 :(得分:4)
您需要链接到python库,例如libpython.a
用于静态链接。
答案 1 :(得分:1)
这个答案很古老而且令人讨厌(静电,eww)。
distutils是大多数情况下的答案。
如果您真的坚持DIY,请将其添加到〜/ .profile:
# Works on Lion
alias pygcc='gcc -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/ /usr/lib/python2.7/config/libpython2.7.dylib'
alias pyg++='gcc -I/System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7/ /usr/lib/python2.7/config/libpython2.7.dylib'
使用方法: pyg ++ yourfile.cc
pygcc someotherfile.c
答案 2 :(得分:0)
当然,我的答案很晚, 但我有一个相同的问题,我需要 做一些搜索 我使用ubuntu 11,bash shell 解决的是:
g ++ c_pyth.cpp -o c_pyth -I /usr/include/python2.7/ /usr/lib/python2.7/config/libpython2.7.so
如果你不包含/usr/include/python2.7/,编译器将看不到“Python.h”
如果你不包含/usr/lib/python2.7/config/libpython2.7.so,编译器将无法生成静态可执行文件