Xcode4: “bad codegen, pointer diff”链接错误再次出现。

4
该问题与以下有关:Xcode 4中出现“bad codegen, pointer diff”链接器错误32位构建中的“bad codegen, pointer diff in boost”错误XCode 3.2.6和4链接器错误ld:bad codegen,在...中指针差异到全局弱符号 我正在将所有项目升级到Xcode4,但是遇到了一些奇怪的问题。只有在我构建通用二进制或32位版本时才会出现上述错误。如果只使用64位,事情就能正常工作。我正在自己构建一个自定义静态库,目前我并没有在代码中使用任何可见性设置(即attribute ((visibility ("default"))))。如果我链接该库并尝试构建项目,则会出现精确的错误:   ld:bad codegen,在 Motor::Core::DefaultStoragePolicy::DefaultStoragePolicy(myWindowContent* const&)to global weak symbol Motor::Core::NullPointerException::~NullPointerException()for architecture i386   它位于我的SmartPtr类中,该类可以抛出NullPointerException(仅从std::exception派生)。如果我明确将NullPointerException类的可见性设置为隐藏,那么事情就可以编译好了,但隐藏异常是不好的!我尝试了以下编译器:GCC 4.2、LLVM-GCC 4.2和LLVM 2.1,都有同样的问题。在项目/目标设置中将Symbols Hidden By Default设置为yes没有起作用(也不是我想要的)。那么我该如何解决这个问题而不隐藏我的异常(这是无意义的)?我必须接受它吗?还请期待您的想法,谢谢!
1个回答

6
好的,我找到了错误,我的应用程序中内联方法隐藏设置为,而在构建静态库时设置为否。因此,如果您遇到相同的问题,请确保将内联方法隐藏设置为。现在我的代码也可以与默认情况下隐藏的符号一起使用,这正是我想要的!仍然有一个谜团,就是为什么错误只在32位版本中显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接