2014-04-14 28 views
5

Python yorumlayıcısını 3.4 bir Qt 5.2.1 uygulamasına (64-bit) gömmek istiyorum. Ancak, sorunları oluşturuyordum, yani main.cpp'de Python başlığını eklediğimde, iyi derler.Python3'ü Qt'ye gömme

C:\Python34\include\object.h:435: error: C2059: syntax error : ';' 
C:\Python34\include\object.h:435: error: C2238: unexpected token(s) preceding ';' 

enter image description here

Çok benzer problem buna: Ben

// 
// embedpytest.cpp 
// 
#include <QLibrary> 
#include <python.h> 


EmbedPyTest::EmbedPyTest() 
{ 
} 

(Qt Başlıklardan sonra) başka bir yerde koymak zaman

#include <python.h> 
#include "mainwindow.h" 
#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 

    return a.exec(); 
} 

ama derleme hatası alıyorsunuz ama çözüm çalışmıyor

Embedding Python in Qt 5

Bu sorunun nasıl çözüleceğini bilen var mı? ya da python.h ve Qt5 'un sonsuza kadar mutlu bir şekilde yaşayabilmeleri için bazı geçici çözüm önerileri sunuyoruz?

PyType_Slot *slots; /* terminated by slot==0. */ 

sorun bu hat ile, "yuva" Qt varsayılan olarak bir anahtar kelime olmasıdır:

+0

Bu cevap sizin için nasıl çalışmadı? Çünkü benim için tam olarak aynı Python ve Qt sürümüyle çalıştı. – cmannett85

+0

imkansız görünüyor. 64-bit python 3.4, 64-bit Qt 5.2.1 ve visual studio 2012 kullanıyorum – krusty

+0

G ++ kullanıyordum, belki de fark bu. – cmannett85

cevap

3

hatalı çizgi budur. 3. Taraf Sinyaller ve Yuvalı Qt kullanarak

: documentation Ayrıntılar için bkz

CONFIG += no_keywords 

: Diğer projelerde olduğu değişken adı kullanmak için, proje dosyasında bu kullanmanız gerekecektir

Üçüncü taraf sinyal/yuva mekanizmasına sahip Qt kullanmak mümkündür. Aynı projede her iki mekanizmayı da kullanabilirsiniz. Qmake project (.pro) dosyanıza aşağıdaki satırı eklemeniz yeterlidir.

Anahtar kelimelerin sinyalleri, yuva ve yayarlar, bu isimler bir 3. parti kitaplığı tarafından kullanılacaktır çünkü, örneğin moc tanımlamak için değil Qt söyler

CONFIG += no_keywords 
Boost. Daha sonra, QT sinyallerini ve yuvalarını no_keywords bayrağıyla kullanmaya devam etmek için, kaynaklarınızdaki Qt moc anahtar kelimelerinin tüm kullanımlarını ilgili Qt makroları Q_SIGNALS (veya Q_SIGNAL), Q_SLOTS (veya Q_SLOT) ve Q_EMIT ile değiştirin.

+0

anlamlıdır, ancak işe yaramaz. Ben sadece CONFIG + = no_keywords denedim ama daha kötü bir değişiklik için 114 hata alıyorum demek. – krusty

+0

@krusty: Bir çekicilik gibi çalışıyorum, http://paste.kde.org/pxebudk7g – lpapp

+0

çalışır, ancak projemde QObject'in sınıfları var ve sorunlara neden oluyor gibi görünüyor. Örneğe baz sınıfı ile örn. QOject http://paste.kde.org/p9qrwvve0 Oluşturmaya çalıştığımda 36 hata alıyorum. Herhangi bir öneri nasıl düzeltilir? – krusty