2011-12-27 49 views
0

我的代碼中有一些第三方,如World Magnetic Model或GeoTrans。當編譯爲命令行二進制文件時,它們都從當前目錄讀入文件,這是沒有問題的。但是,當我在iOS項目中包含該代碼時,出於某種原因,我無法完成這項工作。在iOS項目中包含需要外部文件的庫

在第三方代碼,該文件讀取的fopen,如:

MODELFILE = fopen(filename, "r"); 

其中,文件名是一樣的東西 「wmm.cof」 和MODELFILE結束是NULL(爲0x0)。

當我檢查我的應用程序包時,我在與應用程序的二進制文件相同的(根)目錄中看到名爲wmm.cof的文件,但沒有運氣。

我該如何處理?

謝謝!

回答

0

你想要做的事,如:

NSString *path = [[NSBundle mainBundle] pathForResource:@"wmm" ofType:@"cof"]; 
MODELFILE = fopen([path cStringUsingEncoding:NSUTF8StringEncoding], "r"); 

如果要保持文件的代碼是可移植的,您可能希望將objc代碼移到一個單獨的文件,並只返回一個const char *

+0

此代碼位於外部C庫中,除了更改源代碼之外,我無法控制它。將Objective-C代碼注入到該代碼中不能編譯。我錯過了什麼嗎? – Christoph 2011-12-27 23:59:38

+0

是的,編譯objc源文件名需要以「.m」或「.mm」結尾(而不是「.c」,「.cpp」等)。 「.m」= objc 「.mm」= objC++ – 2011-12-28 00:08:03

+0

對,但我不能(或不想)將所有外部庫的.c文件更改爲.m文件。 – Christoph 2011-12-28 00:10:29

相關問題