13

我在 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 文件添加到名为 .m 的 qmake 变量OBJECTIVE_SOURCES中。我的项目 .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 文件移动到SOURCES我的 Qt .pro 文件的部分,一切都会按预期工作。

我正在使用 Qt 4.6.0。

我的问题是:将 Cocoa 调用与 Qt / C++ 集成的推荐方法是什么,在上面的示例中我做错了什么?

4

1 回答 1

18

它将您的文件编译.m为Objective-C。您希望它成为.mmObjective-C++ 的文件。

于 2010-03-01T10:19:18.750 回答