我通常在OSX和iOS上开发应用程序。我发现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.mm
的 test.h
。为了在 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等辅助工具访问,而我需要为视障人士创建一些应用程序。
非常感谢!