J'écris une application en C#, qui est multiplateforme. Elle utilise DllImport
pour plusieurs bibliothèques différentes. Il est aussi à la fois x32 et x64. Il semble fonctionner correctement pour mes propres .dll/.so compilés. J'ai placé les bibliothèques partagées x32 dans le sous-dossier x32, et les bibliothèques partagées x64 dans le sous-dossier x64.
Sous Windows, via .net framework, j'appelle SetDllDirectory("x32" or "x64")
en fonction du courant courant. Sur mono, que ce soit sous Windows, linux ou mac, j'utilise un fichier DllMap
dans RandomLibrary.dll.config. Cela fonctionne bien pour les fichiers situés dans les répertoires x32 ou x64.
Cependant, j'utilise aussi DllImport
pour des bibliothèques que je n'ai pas écrites, comme FreeType2. Sous Windows, je place simplement les bibliothèques construites dans les deux sous-dossiers. Cependant, sous linux, je préfère utiliser la bibliothèque libfreetype6 que vous pouvez installer via votre sympathique gestionnaire de paquets local. Je peux coder en dur le lien DllMap à /usr/lib/x86_64-linux-gnu/libfreetype
.so.6, mais je suppose que le fichier freetype change en fonction de la distro que vous utilisez.
Existe-t-il un moyen simple de trouver libfreetype.so quelle que soit la distribution que j'utilise ?