未定义的“___divmodsi4”将Monotouch项目与发布模式下的静态库相链接

时间:2012-09-04 11:54:43

标签: xamarin.ios linker-errors

我有一个Monotouch项目链接到一个包含C ++模块的静态库 Monotouch版本:3.0.3.5
XCode版本:4.4.1
C / C ++编译器:Apple LLVM 4.0

在iOS模拟器和iOS设备的调试模式下构建项目时一切正常 - 应用程序已链接并运行。 但是,在为iOS设备构建发布配置时,会出现以下错误:

 Undefined symbols for architecture armv7: "___divmodsi4"


静态库代码中的以下行以某种方式导致了问题:

 int number_of_buckets = num_samples / window_samples_step;

如果按如下方式修改此行,问题就会消失:

 int number_of_buckets = (int)((float)num_samples / (float)window_samples_step);

如果没有上述修改,您对如何解决问题有任何想法吗?

谢谢, 乌瑞。

2 个答案:

答案 0 :(得分:1)

这发生在构建结束附近,通常取决于它的原始参数。尝试比较发布调试版本之间的选项,并检查:

  • 您在两种配置上使用相同的其他mtouch参数;

  • 您在两种配置上使用相同的编译器 Mono AOT与LLVM编译器;

  • 您在两种配置上使用相同的架构 ARMv6与ARMv7

否则为附加(例如,优于bug report或者pastebin)完整构建日志(来自MonoDevelop的错误填充构建输出) >调试发布构建。

更有帮助的是在重新构建之前将“-v -v -v”添加到其他mtouch参数。这将增加关于每个步骤的详细程度(细节)。

答案 1 :(得分:1)

您需要将应用程序的部署目标(在项目选项中,Build / iPhone Application页面)设置为至少5.0。