gpt4 book ai didi

c++ - Mac 上的 Eclipse dyld : Library not loaded: Image not found

转载 作者:太空狗 更新时间:2023-10-29 19:58:42 28 4
gpt4 key购买 nike

全部:

我已经在一个工作区 (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_PATHDYLD_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_PATHDYLD_FALLBACK_LIBRARY_PATH的区别请引用this发布

关于c++ - Mac 上的 Eclipse dyld : Library not loaded: Image not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18855488/

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