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 пожалуйста, обратитесь к этому сообщению

Другие вопросы по тегам