ios – fopen $UNIX2003在外部库中失败

我有一个外部静态库(我也有源代码),它使用’fopen’来访问文件系统上的文件.奇怪的是,当它在fopen $UNIX2003中使用EXE_BAD_ACCESS尝试这样做时,它总是在模拟器和设备上都失败(不是在fopen中,当抛出异常时,fopen甚至不在调用堆栈中.我试过使用直接使用相同的路径/选项进行操作并且它有效.所以,首先,库有可能以某种方式调用不同的fopen实现吗?如果是这样,为什么,最重要的是如何让它调用’权利’ ‘一个?

编辑:实际上,抛出异常之前调用堆栈中的最后一个函数是_interposition_vtable_unimplemented,fopen $UNIX2003在它之前.

fopen $UNIX2003是OS X提供的符号,不是iOS Simulator运行时的一部分. iOS总是符合要求,因此没有传统的(非$UNIX2003)函数变体(提供与针对旧版OS X SDK构建的代码的二进制兼容性).

您遇到的问题的常见原因是您有一个针对OS X SDK构建的目标文件或存档(libsomething.a),并且正在尝试将其链接到您的iOS Simulator可执行文件中.这是不受支持的,因为这两个平台在该层不是二进制兼容的.

您需要针对iOS模拟器SDK重建库(libsomething.a).

此问题导致iOS 7在运行时中止,但现在在iOS 8上构建时出现链接错误,这似乎有助于使这些问题更加明显.

https://stackoverflow.com/questions/15856848/fopenunix2003-fails-inside-external-library

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ios – fopen $UNIX2003在外部库中失败