Bündeln von .dylib-Dateien mit der ausführbaren Mono-Datei

Ich habe eine Anwendung und möchte eine bestimmte Dylib mitbündeln. Ich benutze "dylibbundler", um die dylib zusammen mit Abhängigkeiten in den ausführbaren Ordner zu kopieren. Hier ist der Befehl, den ich benutze:

dylibbundler -od -b -x /opt/local/lib/libil.dylib -d ./libs/ -p @executable_path/libs/

dylibbundler befindet sich im selben Verzeichnis wie die ausführbare Datei. Das Tool führt rekursiv "install_name_tool" für die Bibliothek und alle ihre Abhängigkeiten aus (und kopiert sie in ein angegebenes Verzeichnis). Wenn Sie otool -L in der ./libs/libil.1.dylib ausführen, wird Folgendes zurückgegeben:

@executable_path/libs/libIL.1.dylib (compatibility version 3.0.0, current version 3.0.0)
@executable_path/libs/libtiff.5.dylib (compatibility version 8.0.0, current version 8.0.0)
@executable_path/libs/liblzma.5.dylib (compatibility version 6.0.0, current version 6.4.0)
@executable_path/libs/libpng15.15.dylib (compatibility version 30.0.0, current version 30.0.0)
@executable_path/libs/libmng.1.dylib (compatibility version 2.0.0, current version 2.0.0)
@executable_path/libs/liblcms.1.dylib (compatibility version 2.0.0, current version 2.19.0)
@executable_path/libs/libjasper.1.dylib (compatibility version 2.0.0, current version 2.0.0)
@executable_path/libs/libjpeg.9.dylib (compatibility version 10.0.0, current version 10.0.0)
@executable_path/libs/libIlmImf.6.dylib (compatibility version 7.0.0, current version 7.0.0)
@executable_path/libs/libImath.6.dylib (compatibility version 7.0.0, current version 7.0.0)
@executable_path/libs/libHalf.6.dylib (compatibility version 7.0.0, current version 7.0.0)
@executable_path/libs/libIlmThread.6.dylib (compatibility version 7.0.0, current version 7.0.0)
@executable_path/libs/libIex.6.dylib (compatibility version 7.0.0, current version 7.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 159.1.0)
@executable_path/libs/libz.1.dylib (compatibility version 1.0.0, current version 1.2.7)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 52.0.0)

Es scheint mir, dass es alles richtig kopiert hat. Aber wenn ich meine Anwendung starte, bekomme ich immer die gleiche Ausnahme:

Unhandled Exception: System.DllNotFoundException: ./libs/libIL.1.dylib
Unhandled Exception: System.DllNotFoundException: @executable_path/libs/libIL.1.dylib
Unhandled Exception: System.DllNotFoundException: libs/libIL.1.dylib

Wie Sie sehen, habe ich drei verschiedene Arten des Verweises auf die Bibliothek ausprobiert, aber sie wird immer nicht gefunden.

Für jede Hilfe wäre ich sehr dankbar. Ich habe bereits seit Monaten versucht, dieses Problem zu lösen.

AKTUALISIEREN: Wenn ich einen absoluten Pfad zur Dylib spezifiziere, findet sie ihn, beschwert sich dann aber über die Abhängigkeiten:

Mono: DllImport error loading library 'dlopen(/Users/me/myapp/libs/libil.1.dylib, 9): Library not loaded: @executable_path/libs/libtiff.5.dylib
  Referenced from: /Users/me/myapp/libs/libil.1.dylib
  Reason: image not found'.

Es scheint mir, dass @executable_path nicht durch den tatsächlichen absoluten ausführbaren Pfad ersetzt wird.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage