2010-03-01 14 views
12

कैसे मिलाएं मैक पर एक शुद्ध सी ++/क्यूटी प्रोजेक्ट है, लेकिन अब मुझे लगता है कि मुझे कोको एपीआई में केवल कुछ विधियों को कॉल करने की आवश्यकता है। यहाँ सूचीबद्ध निर्देशों का पालन:Qt, C++ और Obj-C/Cocoa

http://el-tramo.be/blog/mixing-cocoa-and-qt

मैं एक "मीटर" फ़ाइल में एक सी ++ वर्ग कार्यान्वयन है। एक परीक्षण के रूप में, मेरी "foo.m" फ़ाइल जाहिरा तौर पर निम्नलिखित कोड (प्रासंगिक #include तरीकों स्पष्टता के लिए निकाले गए हैं) .:

int foo::getMagicNumber() 
{ 
    NSCursor *cursor = [NSCursor new]; 
} 

होता है, मैं OBJECTIVE_SOURCES नामक एक qmake चर करने के लिए मीटर फ़ाइल जोड़ने की जरूरत । मेरे परियोजना .pro फ़ाइल इस तरह दिखता है:

TARGET = testApp 
CONFIG += console 
CONFIG -= app_bundle 
TEMPLATE = app 
SOURCES += main.cpp 
OBJECTIVE_SOURCES += foo.m 
HEADERS += test.h 

बहरहाल, जब भी मैं कोशिश करते हैं और अपने प्रोजेक्ट को संकलित मैं निम्नलिखित त्रुटि मिलती है:

foo.h:4expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'

यह मेरा शीर्षक में class foo फ़ाइल पर इशारा कर रही है फ़ाइल। अगर मैं .m फ़ाइल से सभी कोको कॉल हटा देता हूं, और .m फ़ाइल को मेरे क्यूटी .pro फ़ाइल के SOURCES अनुभाग में ले जाता हूं, तो सब कुछ अपेक्षित काम करता है।

मैं क्यूटी 4.6.0 का उपयोग कर रहा हूं।

मेरा प्रश्न है: कोटा/सी ++ के साथ कोको कॉल को एकीकृत करने का अनुशंसित तरीका क्या है, और मैं ऊपर दिए गए उदाहरण में क्या गलत कर रहा हूं?

उत्तर

17

यह आपके .m फ़ाइल को उद्देश्य-सी के रूप में संकलित कर रहा है। आप उद्देश्य-सी ++ के लिए .mm फ़ाइल बनना चाहते हैं।

+2

दोह! समस्या यह थी कि ".m" फ़ाइल वास्तव में ".mm" होनी चाहिए - एक बार यह बदल दिया गया है तो सब कुछ पूरी तरह से काम करता है। – Thomi

संबंधित मुद्दे