【发布时间】:2012-10-12 11:02:18
【问题描述】:
我们有一个相当大的 c++ 库,我们将其打包在一个 Adobe Flex 扩展中,供我们的 Flex 用户使用。我们为多个平台打包了该 ANE,包括 Mac OS 和 iOS。在 Mac 上,当我们使用传统的标准 C++ 库 (libstdc++) 构建时,一切都很好。当然,我们不想停留在一个过时的即将不受支持的库中,我们切换到当前的libc++。库(.a 文件)以这种方式构建得很好,调用该库的本机 iOS 应用程序也是如此。
但是,用于构建 ANE 的 adt Adobe 工具现在会失败,并且没有有用的错误消息(不要以 Adobe 工具的质量开头)。 Unix 进程的一些诡计让我们发现adt 调用了操作系统链接器ld。复制相同的 ld 调用让我们发现链接器抱怨一大堆未定义的符号,所有(或者可能大部分)都是标准 C++ 库符号。
确实,ld 调用使用作为参数 -lstdc++ 引用旧库。我想使用 libc++ 意味着 lc++ 参数。但是,由于(显然)不相关的目录问题,尝试修改 ld 失败。
那么有没有办法告诉adt 我们的 .a 库使用当前的标准 C++ 库而不是旧版库?对于adt 的限制,是否有任何明智的解决方法?更一般地说,有没有办法说服 adt(以及一般的 Flex Builder)不要拦截和吃掉工具错误消息?
欢迎提出任何建议。这是使用 Xcode 4.5.1。
【问题讨论】:
标签: c++ apache-flex xcode4 standard-library air-native-extension