我通常在OSX和iOS上开发应用程序。我发现Objective-C对许多任务非常有用,并且在很多情况下可以加快工作速度。在Windows上混合使用Qt和Objective-C
我想在Windows系统上移植我的应用程序。我意识到(如果您有任何其他解决方案,请让我知道!)Qt可能是一个非常有用的工具!用Qt创建GUI非常简单快捷。问题是Qt与C++协同工作,OSX与Objective-C协同工作。
我读过Qt可以处理Objective-C的源代码,其实你可以找到OBJECTIVE_SOURCES
和OBJECTIVE_HEADERS
的makefile变量。
我搜索了如何配置Qt Creator接受.mm
文件,但我无法使其工作。
里面的.pro
文件我有类似以下内容:
...
OBJECTIVE_SOURCES += \
test.mm
INCLUDEPATH += "C:\GNUStep\...\Headers"
LIBS += -L"C:\GNUStep\...\Libraries" -lobjc -lgnustep-base
QMAKE_CXXFLAGS += -fconstant-string-class=NSConstantString -std=c99
...
我非常简单的项目是一个小部件(.h
和.cpp
),该main.cpp
和test.h
其test.mm
。为了混合C++和Objective-C,我想到了一个“桥”(就像我在Cocoa中混合Objective-C和C++时那样),所以我创建了test.h
作为一个简单的头文件(没有Objective-C,只有一个桥) :
// test.h
void testFunction(void);
比:
// test.mm
#import <Foundation/Foundation.h>
void testFunction(void) {
NSString* string;
string = @"This is a test string";
NSLog(@"%@", string);
}
最后:
// main.cpp
...
#include "test.h"
...
testFunction();
...
链接器给我的经典 “未定义的参考作用testFunction”。像它这样的东西不能链接从.mm
文件创建的.o
目标文件。
你们中的任何人都可以告诉我,如果这个过程出了什么问题或者指向我有关如何配置Qt来接受Objective-C语言的教程?还有另一个我真正喜欢的解决方案,它是纯粹的Objective-C,即使用GNUStep Gorm接口生成器,但不幸的是,使用Gorm构建的GUI完全无法通过诸如Jaws或NVDA等可访问工具访问,而且我需要为视障人士创建一些应用程序!
非常感谢您
谢谢,现在我会试试这个。真的,我在test.mm中包含了Foundation.h,我忘了提及。 – 2014-08-27 08:31:02
呃......我的安装文件夹中没有c:\ GNUStep \ ... \ Library \ Frameworks,而“LIBS + = -framework ...”给出了“无法识别的选项 - 框架”,也许我错过了一些东西,或者我简化了你的建议......你能否给我另一个提示? – 2014-08-27 08:48:32
C:\ GNUStep ...是一个Windows路径,不是OSX! – TheDarkKnight 2014-08-27 08:50:21