2

我有一个 Qt4.8.4 桌面应用程序,可以在我的 Macbook Pro 上构建和运行良好,运行带有 Xcode 5.0.2 的 Mountain Lion,使用带有 Qt 4.8.4 和 GCC(x86 64 位)的 Qt Creator 2.7.0。我正在尝试将我的应用程序移植到 Qt 5.2.1。我的代码是带有一些 Objective-C 的 C++。

我用这个配置在我的同一台 Macbook pro 上构建了 Qt5.2.1:

./configure -prefix $PWD/qtbase -debug-and-release -developer-build -no-c++11 -opensource -plugin-sql-sqlite -nomake tests -confirm-license

它配置和构建良好。

当我尝试使用 Qt 5.2.1 和 GCC(x86 64 位)或 Clang(x86 64 位)在 Qt Creator 2.7.0 中构建我的应用程序时,我收到很多错误,在我看来这些错误表明 Objective-C 部分我的应用程序找不到他们需要的库。例如:

/Users/david/dev/svn/map_creator3/src/widgets/mac_toolbar_button_proxy.mm:15: warning: instance method '-selectedSegment' not found (return type defaults to 'id') [-Wobjc-method-access]
    target_->TriggerAction([sender selectedSegment]);
                                   ^~~~~~~~~~~~~~~
/Users/david/dev/svn/map_creator3/src/common/locations_mac.mm:34: error: use of undeclared identifier 'NSWorkspace'
      [[NSWorkspace sharedWorkspace]
        ^
/Users/david/dev/svn/map_creator3/src/widgets/mac_toolbar_button_control.mm:30: error: unknown type name 'NSAutoreleasePool'
  NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
  ^

还有很多类似的。在 C++ Qt5 桌面应用程序中使用 Object-C 需要添加一些魔法设置吗?

4

1 回答 1

3

Merlin069在对我的问题的评论中让我走上了正确的道路(谢谢!),我在这里找到了一个例子。当我添加时,这些构建错误(以及其他一些错误)消失了

LIBS += -framework Cocoa

在我抱怨的 .mm 文件中,

#include <Cocoa/Cocoa.h>
于 2014-04-03T17:53:45.430 回答