在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 *
此代码位于外部C库中,除了更改源代码之外,我无法控制它。将Objective-C代码注入到该代码中不能编译。我错过了什么吗? – Christoph 2011-12-27 23:59:38
是的,编译objc源文件名需要以“.m”或“.mm”结尾(而不是“.c”,“.cpp”等)。 “.m”= objc “.mm”= objC++ – 2011-12-28 00:08:03
对,但我不能(或不想)将所有外部库的.c文件更改为.m文件。 – Christoph 2011-12-28 00:10:29