DllNotFoundException с DllImport в Mono на Mac

Я пытаюсь использовать DLLImport в своем проекте Mono Mac, чтобы использовать свой собственный .dylib, но получаю исключение DllNotFoundException. Я предполагаю, что это как-то связано с моим .dylib, поскольку я могу сделать это с существующими файлами .dylib, такими как libmojoshader.dylib.

Вот как я использую DLLImport

[DllImport("libtestDylib.dylib")]
static extern int libsum(int a, int b);

Затем я вызываю функцию libsum, чтобы проверить, работает ли она.

Я обнаружил, что запуск приложения через терминал с помощью команды MONO_LOG_LEVEL="debug" MONO_LOG_MASK="dll" mono myGame.exe — отличный способ отладки подобных проблем, однако я не могу запустить мое приложение .exe. Я пытался использовать как .exe в папке сборки, так и файл в .app/contents/MonoBundle. исследование.

Последний файл выдает "Файл не содержит допустимого образа CIL", а два других "Нет файла Info.plist в комплекте приложения или нет NSPrincipalClass в файле Info.plist".

Итак, я бы предположил, что первым шагом является запуск приложения через терминал, чтобы получить правильную отладочную информацию о том, почему мой .dylib не может быть найден.

Созданный мной .dylib представляет собой пустую библиотеку BSD C, созданную в XNA4.

Изменить

Я даже не могу заставить работать существующие dylibs.


person Niklas.B    schedule 16.11.2012    source источник


Ответы (1)


Я обнаружил проблему, создав новый проект Mono Mac с одним файлом С#, который затем скомпилировал через терминал и запустил с помощью команды отладки. С обратной связью терминала выяснилось, где программа искала .dylib, и что созданная мной библиотека была построена с неправильной архитектурой, что было просто решено путем сборки для 32-битных систем.

person Niklas.B    schedule 19.11.2012