我在Mac上有一个纯C ++ / Qt项目,但我现在发现我需要调用一些仅在Cocoa API中可用的方法。按照此处列出的说明操作:
http://el-tramo.be/blog/mixing-cocoa-and-qt
我在“.m”文件中有一个C ++类实现。作为测试,我的“foo.m”文件包含以下代码(为清晰起见,已删除相关的#include
方法)。:
int foo::getMagicNumber()
{
NSCursor *cursor = [NSCursor new];
}
显然,我需要将.m文件添加到名为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文件中删除所有cocoa调用,并将.m文件移动到我的Qt .pro文件的SOURCES
部分,一切都按预期工作。
我正在使用Qt 4.6.0。
我的问题是:将Cocoa调用与Qt / C ++集成的推荐方法是什么,以及我在上面的示例中做错了什么?
答案 0 :(得分:18)
它正在将您的.m
文件编译为Objective-C。您希望它是Objective-C ++的.mm
文件。