Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios fopen$UNIX2003在外部库中失败_Ios_C_Compilation_Ios Simulator_Static Libraries - Fatal编程技术网

Ios fopen$UNIX2003在外部库中失败

Ios fopen$UNIX2003在外部库中失败,ios,c,compilation,ios-simulator,static-libraries,Ios,C,Compilation,Ios Simulator,Static Libraries,我有一个外部静态库(我也有源代码),它使用“fopen”访问文件系统上的文件。奇怪的是,当它尝试使用EXE BAD\u ACCESSinsidefopen$UNIX2003(不在fopen,当抛出异常时,fopen甚至不在调用堆栈中。我自己也曾尝试使用相同的路径/选项直接使用fopen,它可以工作。因此,首先,库是否可能以某种方式调用不同的fopen实现?如果是,为什么,最重要的是h我怎样才能让它称为“正确的”一个 编辑:实际上,抛出异常之前调用堆栈中的最后一个函数是\u interpositi

我有一个外部静态库(我也有源代码),它使用“fopen”访问文件系统上的文件。奇怪的是,当它尝试使用
EXE BAD\u ACCESS
inside
fopen$UNIX2003
(不在
fopen
,当抛出异常时,
fopen
甚至不在调用堆栈中。我自己也曾尝试使用相同的路径/选项直接使用
fopen
,它可以工作。因此,首先,库是否可能以某种方式调用不同的
fopen
实现?如果是,为什么,最重要的是h我怎样才能让它称为“正确的”一个


编辑:实际上,抛出异常之前调用堆栈中的最后一个函数是
\u interposition\u vtable\u unimplemented
fopen$UNIX2003
在它前面。

fopen$UNIX2003是由OS X提供的一个符号,它不是iOS模拟器运行时的一部分。iOS始终是一致的,因此没有遗留问题(非$UNIX2003)函数的变体(提供这些变体是为了与针对较旧版本的OS X SDK构建的代码实现二进制兼容性)

您看到的问题的常见原因是您有一个针对OS X SDK构建的对象文件或归档文件(libsomething.a),并试图将其链接到您的iOS模拟器可执行文件中。这是不受支持的,因为这两个平台在该层不兼容二进制文件

您需要根据iOS Simulator SDK重建库(libsomething.a)


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

请告诉我如何重建libsomething。a