1

我有一个 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);

您是否有任何想法如何在不进行上述修改的情况下解决问题?

谢谢,乌里。

4

2 回答 2

1

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

于 2012-10-01T21:37:52.663 回答
1

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

  • 您在两个配置中使用相同的附加 mtouch 参数;

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

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

否则,为调试发布版本附加(例如,最好是错误报告或 pastebin)完整的构建日志(来自MonoDevelop 的Error Pad的构建输出) 。

为了更有帮助,在重新构建之前将“-v -v -v”添加到Additional mtouch 参数中。这将增加每个步骤的详细程度(细节)。

于 2012-09-04T12:08:24.387 回答