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

标签 c++ eclipse macos shared-libraries

全部:

我已经在一个工作区 (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/

相关文章:

c++ - 在C++中,对象(如队列、映射)的名称是引用(还是指针)?

macos - (mac) docker ,如何从容器连接到主机中的 redis 服务器

c++ - ubuntu平台poco库链接错误

c++ - 如何在 Doxygen 生成的文档中显示默认构造函数?

c++ - 比较字符串中的符号时出现 std::out_of_range 错误

regex - Ant Build 从 svn 日志输出中读取版本号

eclipse - 如何自动滚动到 Eclipse "open resource"(ctrl+shift+r) 中的文件位置?

java - Spring Maven 构建 : invalid entry size (expected 2 but got 1 bytes)

objective-c - XCode/OS X : Storyboard Minimum Requirements

macos - dyld : Library not loaded error when running command in terminal