SQLite de PHX Software a combiné un assembly géré (System.Data.SQLite) avec une DLL non managée (la DLL SQLite 32 ou 64 bits) dans un fichier et a réussi à les lier ensemble.Comment combiner une DLL non managée et un assembly géré en un seul fichier?
Comment faire? Ai-je besoin d'intégrer l'assembly managé dans la DLL non managée, ou vice versa?
ie. mes questions sont:
- Dans quel ordre dois-je faire cela?
- De quels outils ou connaissances ai-je besoin pour faire cela?
- Comment (si différent) puis-je lier aux fonctions exportées à partir de la DLL non managée dans mon code managé?
La raison pour laquelle je pose cette question est que je veux construire un wrapper zLib géré. Je sais qu'il y a des classes managées dans .NET mais par expérience elles sont un peu limitées (et un peu osées en ce sens qu'elles ne font pas de tamponnage correct), donc je voudrais créer ma propre copie, aussi parce que je veux apprendre à faire cela.
Alors, est-ce que quelqu'un sait ce que je dois faire et comment?
J'ai trouvé ce qui suit:
- How to merge several managed and unmanaged DLLs into a single DLL?
- Sample: Mixing Unmanaged C++, C++/CLI, and C# code
Je vais essayer, mais toute information supplémentaire serait bien aussi.
Réfléchissez à deux fois avant de le faire, surtout avec vos assemblées « cœur ». Si ce n'est pas la caractéristique essentielle de votre code, il est préférable de charger dynamiquement ces assemblys.Dans le cas contraire, toute personne qui utilise un tel assembly devra faire quelques pas supplémentaires pour s'assurer qu'elle utilise la bonne version (x86 vs x64), même s'il n'utilise pas votre code non managé. Il est raisonnable pour vous exemple de 'System.Data.SQLite' (fonctionnalité essentielle) mais pourrait ne pas être raisonnable dans votre cas. – SergGr