J'ai un C++ non managé DLL qui exporte simplement une seule classe (pas COM ... c'est juste une simple classe C++) comme interface. Je veux utiliser cette classe en C # mais on me dit que il ne peut pas simplement être importé en C #.
Quelle est la bonne façon d'utiliser cette classe dans mon application C #?
DllImport est votre meilleur pari. Il y a un peu de massage de type de données, surtout si vous passez des structures, mais vous pouvez presque tout faire avec.
Vous avez besoin d'un intermédiaire proxy (modèle GoF) pour combler la frontière gérée/non gérée.
Deux options:
Le premier sera plus direct, et le second comporte deux étapes C++ pur -> COM -> .NET.
Parfois, il est plus facile de fournir votre propre interface C. SWIG n'est pas anodin à configurer. J'ai utilisé C++ géré et C++/CLI et ils vont bien. Le plus simple était juste de faire un wrapper C (et peut être utilisé par n'importe quel autre langage car la plupart ont un moyen d'appeler une fonction C).