【问题标题】:Eclipse on Mac dyld: Library not loaded: Image not foundMac dyld 上的 Eclipse:未加载库:未找到图像
【发布时间】:2013-09-22 05:23:17
【问题描述】:

全部:

我已在一个工作区 (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 配置中。

提前感谢您的帮助。

------------------------------ 源代码 ----------------------------------

Hello.cpp

#include <stdio.h>
#include "World.h"

int main() {
  printf("Hello %s\n", getWorld().c_str());
  return 0;
}

World.cpp

#include "World.h"

std::string getWorld() { return "World"; }

World.h

#include <string>

std::string getWorld();

【问题讨论】:

  • 在运行 Hello 之前导出 DYLD_LIBRARY_PATH=

标签: c++ eclipse macos shared-libraries


【解决方案1】:
dyld: Library not loaded: libWorld.dylib
Referenced from: /Users/pdl/Development/HelloWorld/Hello/Debug/Hello
Reason: image not found

这意味着您的程序正在使用一个名为 libWorld.dylib 的动态库,尽管您在编译期间将动态库链接到了您的程序。但是你必须告诉你的程序运行时dylib在哪里。

有两种解决方案:

方案一:为你的项目设置动态库环境变量in Eclipse

1.右击你的project name,选择Run As-&gt;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.编辑该文件:

在您的 .profile 文件中添加这一行: export DYLD_LIBRARY_PATH=PATH_TO_YOUR_DYLIB:$DYLD_LIBRARY_PATH

在我的示例中,PATH_TO_YOUR_DYLIB 为 opt/local/lib/my_dylib,因此您只需添加: 导出 DYLD_LIBRARY_PATH=/opt/local/lib/my_dylib:$DYLD_LIBRARY_PATH 在 .profile 文件中

3.问题解决了,在这个解决方案中,你不必为所有eclipse项目设置dylib路径

PS。 DYLD_LIBRARY_PATH 是一个环境变量,用来指定你的动态库的路径

DYLD_LIBRARY_PATHDYLD_FALLBACK_LIBRARY_PATH的区别请参考this的帖子

【讨论】:

  • 你救了我的命
猜你喜欢
  • 2012-11-16
  • 2017-04-09
  • 2013-12-25
  • 2014-11-24
  • 2012-03-20
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多