Я пишу приложение на C #, которое является кроссплатформенным. Он использует DllImport
для нескольких разных библиотек. Это также и x32 и x64. Кажется, это работает правильно для моих собственных скомпилированных.dll/.so. Я поместил общие библиотеки x32 в папку x32 sub -, а общие библиотеки x64 — в папку sub -x64.
В окнах через.net framework я вызываю SetDllDirectory("x32" or "x64")
в зависимости от текущего время выполнения. В моно, через Windows, Linux или Mac, я использую DllMap
в RandomLibrary.dll.config. Он отлично работает с файлами, расположенными в каталогах x32 или x64.
Однако я также использую DllImport
для библиотек, которые не писал, таких как FreeType2. В Windows я просто помещаю встроенные библиотеки в две подпапки -. Однако в Linux я бы предпочел использовать библиотеку libfreetype6, которую вы можете установить через дружественный локальный менеджер пакетов. Я могу жестко закодировать ссылку DllMap на /usr/lib/x86_64-linux-gnu/libfreetype
.so.6, но я предполагаю, что файл freetype будет меняться в зависимости от того, какой дистрибутив вы используете.
Есть ли простой способ найти libfreetype.so независимо от того, какой дистрибутив я использую?