Eclipse на Mac dyld: библиотека не загружена: изображение не найдено
Все:
Я успешно настроил два проекта (Hello и World) в одной рабочей области (HelloWorld). Это простые проекты, которые должны работать вместе как основной проект и проект совместно используемой библиотеки. Это структура:
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();
1 ответ
dyld: Library not loaded: libWorld.dylib
Referenced from: /Users/pdl/Development/HelloWorld/Hello/Debug/Hello
Reason: image not found
Это означает, что ваша программа использует динамическую библиотеку libWorld.dylib, хотя вы связали свою динамическую библиотеку с вашей программой во время компиляции. Но вы должны указать своей программе, где находится dylib во время выполнения.
Есть два решения:
Решение 1. Установите переменные среды динамической библиотеки для вашего проекта in Eclipse
:
1. Щелкните правой кнопкой мыши project name
, Выбрать Run As->Run Configuration
2. Под Environment
нажмите вкладку New
3.Put DYLD_LIBRARY_PATH
или же DYLD_FALLBACK_LIBRARY_PATH
в Name
коробка
4. Поместите путь, где ваш libWorld.dylib
файл находится в Value
коробка
Например: если libWorld.dylib
файл находится в /opt/local/lib/my_dylib
папку, чем положить путь в Name
коробка
Решение 2: установить DYLD_LIBRARY_PATH
в вашем файле конфигурации bash
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
, так что вы просто добавляете: export DYLD_LIBRARY_PATH=/opt/local/lib/my_dylib:$DYLD_LIBRARY_PATH в файле.profile
3.Проблема решена, в этом решении вам не нужно устанавливать путь dylib для всего проекта eclipse
PS. DYLD_LIBRARY_PATH - это переменная среды, указывающая путь к вашей динамической библиотеке
Разница между DYLD_LIBRARY_PATH
а также DYLD_FALLBACK_LIBRARY_PATH
пожалуйста, обратитесь к этому сообщению