gpt4 book ai didi

c++ - 链接 C++ 动态库时惰性符号绑定(bind)失败

转载 作者:太空狗 更新时间:2023-10-29 23:20:10 25 4
gpt4 key购买 nike

我正在用 C++ 编写一个 dylib,但是当我尝试将它链接到我的应用程序时,它在执行时给我一个错误:

dyld: lazy symbol binding failed: Symbol not found: __ZN8Vector2DC1Ev
Referenced from: /Users/noahz/Desktop/Singularity/Singularity Test App/build/Debug/Singularity Test App
Expected in: /Users/noahz/Desktop/Singularity/Singularity Test App/build/Debug/libSingularity.dylib

dyld: Symbol not found: __ZN8Vector2DC1Ev
Referenced from: /Users/noahz/Desktop/Singularity/Singularity Test App/build/Debug/Singularity Test App
Expected in: /Users/noahz/Desktop/Singularity/Singularity Test App/build/Debug/libSingularity.dylib

我确保符号没有被剥离,并且

nm -g libSingularity.dylib  | grep "T" | grep __ZN8Vector

报告该符号存在于库中:

0000000000006df6 T __ZN8Vector2DC1Eff
0000000000006d98 T __ZN8Vector2DC1Ev
0000000000006dc2 T __ZN8Vector2DC2Eff
0000000000006d6e T __ZN8Vector2DC2Ev

我从 XCode 内部链接,所以链接命令有点奇怪。这是 dylib 的链接器命令:

Ld "/Users/noahz/Desktop/Singularity/Singularity Engine/build/Debug
/libSingularity.dylib" normal x86_64
cd "/Users/noahz/Desktop/Singularity/Singularity Engine"
setenv MACOSX_DEPLOYMENT_TARGET 10.6
/Developer/usr/bin/g++-4.2 -arch x86_64 -dynamiclib -isysroot /Develope
/SDKs/MacOSX10.6.sdk "-L/Users/noahz/Desktop/Singularity/Singularity Engine/build
/Debug" "-F/Users/noahz/Desktop/Singularity/Singularity Engine/build/Debug"
-filelist "/Users/noahz/Desktop/Singularity/Singularity Engine/build/Singularity
Engine.build/Debug/Singularity Engine.build/Objects-normal/x86_64
/libSingularity.LinkFileList" -install_name libSingularity.dylib -mmacosx-version-
min=10.6 -framework sfml-system-d -framework sfml-window-d -framework SFML
-framework OpenGL -framework OpenAL -framework sfml-graphics-d -single_module
-compatibility_version 1 -current_version 1 -o "/Users/noahz/Desktop/Singularity
/Singularity Engine/build/Debug/libSingularity.dylib"

这是测试应用程序的链接器命令:

cd "/Users/noahz/Desktop/Singularity/Singularity Test App"
setenv MACOSX_DEPLOYMENT_TARGET 10.6
/Developer/usr/bin/g++-4.2 -arch x86_64 -isysroot /Developer/SDKs/MacOSX10.6.sdk
"-L/Users/noahz/Desktop/Singularity/Singularity Test App/build/Debug" "-F/Users
/noahz/Desktop/Singularity/Singularity Test App/build/Debug" -filelist "/Users/noahz
/Desktop/Singularity/Singularity Test App/build/Singularity Test App.build/Debug
/Singularity Test App.build/Objects-normal/x86_64/Singularity Test
App.LinkFileList" -mmacosx-version-min=10.6 "/Users/noahz/Desktop/Singularity
/Singularity Engine/build/Debug/libSingularity.dylib" -o "/Users/noahz/Desktop
/Singularity/Singularity Test App/build/Debug/Singularity Test App"

关于为什么会发生这种情况和/或如何解决它的任何想法?

最佳答案

如果您的应用程序在架构 x86/64 上与您尝试加载的库不同,这可能解释了您遇到的问题。

两者必须使用相同的架构编译。

关于c++ - 链接 C++ 动态库时惰性符号绑定(bind)失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3323759/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com