全部:
我已经在一个工作区 (HelloWorld) 中成功设置了两个项目(Hello 和 World)。这些是应该作为主项目和共享库项目一起工作的简单项目。这是结构:
HelloWorld
Hello
src
Hello.cpp
Debug
src
Hello - [x86_64/le]
World
src
World.cpp
World.h
Debug
src
libWorld.dylib - (x86_64/le]
我已按照所有说明进行操作,最终能够让它们编译无误。但是,当我尝试运行 Hello 项目时,我收到以下错误:
dyld: Library not loaded: libWorld.dylib
Referenced from: /Users/pdl/Development/HelloWorld/Hello/Debug/Hello
Reason: image not found
我在下面发布了代码。它非常简单,问题(我相信)出在 Eclipse 配置中的某个地方。
预先感谢您的帮助。
-------------------------------------------- 源代码 ------------------------------------
你好.cpp
#include <stdio.h>
#include "World.h"
int main() {
printf("Hello %s\n", getWorld().c_str());
return 0;
}
世界.cpp
#include "World.h"
std::string getWorld() { return "World"; }
世界.h
#include <string>
std::string getWorld();
最佳答案
dyld: Library not loaded: libWorld.dylib
Referenced from: /Users/pdl/Development/HelloWorld/Hello/Debug/Hello
Reason: image not found
这意味着您的程序正在使用名为 libWorld.dylib 的动态库,尽管您在编译期间将动态库链接到您的程序。但是你必须在运行时告诉你的程序 dylib 在哪里。
有两种解决方法:
解决方案 1:为您的项目在 Eclipse
中设置动态库环境变量:
1.右键单击您的项目名称
,选择Run As->Run Configuration
2.在Environment
标签下点击New
3.将DYLD_LIBRARY_PATH
或DYLD_FALLBACK_LIBRARY_PATH
放入Name
框
4.把你的libWorld.dylib
文件所在的路径放在Value
框中
例如:
如果 libWorld.dylib
文件在 /opt/local/lib/my_dylib
文件夹中,则将路径放在 Name
框中
解决方案 2:在 bash 配置文件中设置 DYLD_LIBRARY_PATH
1.通常在 Mac OS 中,配置文件是 ~/
文件夹下的 .profile
,如果你没有这个文件比新建一个相同的文件姓名
2.编辑该文件:
Add this line in your
.profile
file:export DYLD_LIBRARY_PATH=PATH_TO_YOUR_DYLIB:$DYLD_LIBRARY_PATH
in my example the PATH_TO_YOUR_DYLIB is
opt/local/lib/my_dylib
, so you just add: export DYLD_LIBRARY_PATH=/opt/local/lib/my_dylib:$DYLD_LIBRARY_PATH in .profile file
3.问题已解决,在这个解决方案中,您不必为所有eclipse项目设置dylib路径
附言。 DYLD_LIBRARY_PATH 是一个环境变量,用来指定你的动态库的路径
DYLD_LIBRARY_PATH
和DYLD_FALLBACK_LIBRARY_PATH
的区别请引用this发布
关于c++ - Mac 上的 Eclipse dyld : Library not loaded: Image not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855488/