代码之家  ›  专栏  ›  技术社区  ›  Thomi

如何混合Qt、C++和Obj-C/可可

  •  13
  • Thomi  · 技术社区  · 14 年前

    我在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 . 我的project.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文件移到 SOURCES 我的qt.pro文件的所有部分都按预期工作。

    我用的是Qt4.6.0。

    我的问题是:在QT/C++中集成可可调用的方法是什么?我在上面的例子中做了什么错误?

    1 回复  |  直到 14 年前
        1
  •  18
  •   Georg Fritzsche    14 年前

    它正在编译您的 .m 以目标C的形式归档。您希望它是 .mm 目标文件-C++。