在iOS项目中包含需要外部文件的库

在iOS项目中包含需要外部文件的库

问题描述:

我的代码中有一些第三方,如World Magnetic Model或GeoTrans。当编译为命令行二进制文件时,它们都从当前目录读入文件,这是没有问题的。但是,当我在iOS项目中包含该代码时,出于某种原因,我无法完成这项工作。在iOS项目中包含需要外部文件的库

在第三方代码,该文件读取的fopen,如:

MODELFILE = fopen(filename, "r"); 

其中,文件名是一样的东西 “wmm.cof” 和MODELFILE结束是NULL(为0x0)。

当我检查我的应用程序包时,我在与应用程序的二进制文件相同的(根)目录中看到名为wmm.cof的文件,但没有运气。

我该如何处理?

谢谢!

你想要做的事,如:

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