2009-06-08 10 views
2

L'entrée du fichier de configuration dllmap est utilisée dans Mono pour mapper les demandes de DLL Windows aux bibliothèques Linux (.so). Mais il semble que si le framework .NET de Microsoft essaye d'analyser un fichier de configuration avec une telle entrée, une erreur se produit car il ne comprend pas "dllmap". Je pense que tout le reste de ma distribution peut être distribué sans changement sur Linux et Windows XP. De toute la portabilité impliquée, est-ce que cette entrée de configuration est vraiment la chute - la seule pièce non portable? N'y a-t-il pas un moyen de partager ce fichier entre les plates-formes aussi?App.config Portabilité de l'entrée dllmap

Répondre

2

Etes-vous sûr d'avoir besoin des entrées "dllmap"? Ne pouvez-vous pas compter sur le mappage automatique "somelibrary" à "somelibrary.dll" sur Windows et "somelibrary.so" sur Linux?

D'ailleurs, je pensais que le cadre juste sauter les entrées ne s'attend pas ...

EDIT: La méthode standard pour expédier les bibliothèques de Linux est d'avoir une symlink version moins pointant vers la dernière version. Donc, vous devez ajouter libfmodex.so pointant vers libfmodex-4.22.01.so. Ensuite, utilisez [DllImport("fmodex")] et le cadre figurera le reste automatiquement.

+0

1) Le nom de la bibliothèque Windows est fmodex.dll. Le nom de la bibliothèque Linux est libfmodex-4.22.01.so. Je préférerais ne pas les renommer, et je doute que la cartographie automatique le comprenne. 2) Je pensais que .NET ignorerait les entrées qu'il ne comprend pas jusqu'à ce que j'atteigne une erreur d'exécution - apparemment, il n'a jamais essayé de lire le fichier de configuration jusqu'à ce qu'une erreur survienne, puis quand il a essayé de lire la config. comment réagir, il y avait une autre erreur de traitement du fichier. – BlueMonkMN

+0

Je pourrais vérifier moi-même, mais je ne suis pas démarré sous Linux pour le moment: existe-t-il un lien symbolique dans un fichier .tar.gz de sorte que lorsque l'archive est extraite, vous obtenez le fichier et un lien symbolique ? – BlueMonkMN

+0

Oui, c'est le comportement dafault de tar. – skolima

0

Placez le code d'importation DLL dans une DLL d'assemblage séparé. Puis ajoutez un fichier yourinterop.dll.config avec les entrées dllmap. Il sera ignoré par MS et traité par mono. Voir mon duplicate question.