@Gregoire Guyon
Remarques importantes
Sur C++ DLL
- Compatible avec tous les langages natifs.
- Supporte l’export de fonctions classiques, objets COM, ou même des interfaces personnalisées.
- Taille très réduite possible (même < 10 Ko).
- Nécessite une gestion fine de la mémoire, du thread safety, etc.
Sur NativeAOT C# DLL
- Par défaut, pas de runtime CLR embarqué. La DLL est entièrement native, sans besoin de .NET Framework ni .NET Core.[/B].
- Les fonctions doivent être décorées avec [UnmanagedCallersOnly] pour être exportées.
- Les signatures doivent utiliser des types simples (int, float, IntPtr, void*, etc.).
- Pas de reflection, pas de dynamique, pas de DllImport interne.
- À utiliser comme bibliothèque fonctionnelle autonome.
Quand préférer l’un ou l’autre ?
DLL légère pour appel depuis application Win2 native: C/C++
Portabilité multiplateforme avec logique métier en C#: C# NativeAOT (si interop minimale)
Besoin de reflection, LINQ, dynamic: NativeAOT inadapté
Développement rapide avec mémoire managée: C# NativeAOT
Intégration avec COM ou ActiveX: C++ uniquement
En cas de traitement temps réel, une DLL native doit toujours être préférée à une DLL NativeAOT.
Partager