我通常在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