【问题标题】:How to mix Qt, C++ and Obj-C/Cocoa如何混合 Qt、C++ 和 Obj-C/Cocoa
【发布时间】:2010-03-01 10:13:20
【问题描述】:

我在 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 文件中删除所有可可调用,并将 .m 文件移动到我的 Qt .pro 文件的SOURCES 部分,一切都会按预期工作。

我使用的是 Qt 4.6.0。

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

【问题讨论】:

    标签: c++ objective-c cocoa qt qmake


    【解决方案1】:

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

    【讨论】:

    • 噢!问题是“.m”文件实际上应该是“.mm”——一旦改变了,那么一切都会完美。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多