J'écris un wrapper C# pour une bibliothèque native tierce, que nous avons sous forme de DLL. Je voudrais être en mesure de distribuer une seule DLL pour le nouvel assemblage. Est-il possible pour moi d'incorporer la DLL win32 dans ma DLL .NET et d'y passer des appels en utilisant P/Invoke? Si c'est le cas, comment?Puis-je intégrer une DLL win32 dans un assembly .NET et y effectuer des appels à l'aide de P/Invoke?
Puis-je intégrer une DLL win32 dans un assembly .NET et y effectuer des appels à l'aide de P/Invoke?
Répondre
Je ne l'ai jamais fait mais je connais un projet opensource qui le fait. Ils intègrent le code SQLite3 natif dans l'assembly SQLite géré en utilisant leur propre outil appelé mergebin.
Allez jeter un coup d'œil au SQLite project for .NET by PHX et prenez la source et vous verrez comment c'est fait.
Je ne pense pas que vous puissiez le faire directement, mais il est possible de l'extraire au moment de l'exécution vers un emplacement temporaire et d'appeler cette copie.
Fonctionne si la DLL native n'a aucune dépendance.
Vous pouvez compiler la DLL en tant que ressource intégrée, accéder au flux à l'intérieur de votre code, le sérialiser vers le dossier temporaire et l'utiliser à partir de là.
Trop de code exemple ici, mais le chemin n'est pas compliqué.
- 1. Comment charger un assembly qui référence une DLL Win32?
- 2. Comment faire des appels API Win32 à partir de PHP?
- 3. Comment résoudre l'exception .NET CF "Impossible de trouver PInvoke DLL"?
- 4. .NET: Comment Pinvoke UpdateProcThreadAttribute
- 5. Impossible de trouver DLL PInvoke 'sqlceme30.dll'
- 6. Surveillance des appels d'application à la DLL
- 7. .NET PInvoke Gestion des exceptions
- 8. sparc assembly et le registre y y
- 9. Existe-t-il un moyen de package plus d'un assembly .NET dans une DLL?
- 10. Comment puis-je créer une ressource Windows à intégrer dans un assembly .NET, à partir du texte?
- 11. Appels Windows Mobile API à partir de .NET - quelle DLL et quelles sont les valeurs enum
- 12. Comment intégrer un assembly satellite dans le fichier EXE
- 13. Comment importer un assembly net
- 14. Générer par programme une DLL C Win32
- 15. chiffrement chaîne dans un assembly .NET
- 16. Comment puis-je intégrer une version dans une DLL?
- 17. Y compris dll dans l'exe?
- 18. Définir l'application TimeZone à l'aide de PInvoke .Net
- 19. Existe-t-il un moyen de dire quelle est la DLL d'un assembly .net?
- 20. PowerShell: Performances des appels de méthodes .NET
- 21. Pouvez-vous intégrer des métadonnées dans une classe .NET?
- 22. Y a-t-il une différence spéciale entre un exe et un dll du point de vue .net?
- 23. Existe-t-il un moyen de "redémarrer" un assembly .net?
- 24. Y at-il un moyen d'installer une DLL dans le GAC dans un fichier VSI?
- 25. comment insérer une boîte de dialogue dans un code win32 dll
- 26. Quelle est la meilleure façon de télécharger et d'installer à la demande des DLL dans .NET?
- 27. Versions DLL .NET et déploiement de xcopy
- 28. installation et l'enregistrement des bibliothèques OpenSSL win32
- 29. Appels API User32 dans .NET
- 30. Aide PInvoke