Qt:尝试在qt中使用python.h时未定义的符号

问题描述:

我在Mac上用Qt做了一些小小的工作。我需要在我的主函数中调用一个python函数。但是,当我尝试调用Py_initialize()为大家都说,编译器将抛出一个错误这样的:Qt:尝试在qt中使用python.h时未定义的符号

Undefined symbols for architecture x86_64: 
    "_Py_Initialize", referenced from: 
    _main in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see 
invocation) 
make: *** [video.app/Contents/MacOS/video] Error 1 
07:48:07: The process "/usr/bin/make" exited with code 2. 
Error while building/deploying project video (kit: Desktop Qt 5.8.0 
clang 64bit) 
When executing step "Make" 

我的代码是微不足道,不应该有什么奇怪的这一点。这是它:

// bunch of headers 
#include <python2.7/Python.h> 

using namespace std; 


int main(int argc, char *argv[]) 
{ 

Py_Initialize(); 

QGuiApplication app(argc, argv); 

QQmlApplicationEngine engine; 

QQmlComponent component(&engine, QUrl(QStringLiteral("qrc:///main.qml"))); 
QObject *object = component.create(); 
QObject *mainForm = object->findChild<QObject*>("mainForm"); 

SignalNexus sn; 

QObject::connect(mainForm, SIGNAL(populateToken(QString)), &sn, SLOT(pushToPipe(QString))); 

QObject::connect(&sn, SIGNAL(populateResult(QVariant, QVariant)), mainForm, SLOT(handleResult(QVariant, QVariant))); 
return app.exec(); 
} 

当我评论Py_initalize()线,一切工作正常。我认为这与OSx有关。但我真的不知道如何解决这个问题。需要帮助。

更改您的包括线这个

// bunch of headers 
#include <Python/Python.h> 

using namespace std; 


int main(int argc, char *argv[]) 
{ 

Py_Initialize(); 
+1

酷,它的工作原理。你能给我一个简单的解释吗?谢谢! – alvinzoo

+0

当然可以! Python已经是Mac OS X上的一个框架!所以你实际上在C里面不需要做任何事情:) –

+0

如果你想从比我更专业的人那里得到更好的解释,你可以在这里看到更多http://*.com/questions/16454129/python-h-header -file-missing-on-mac-os-x-10-6 –