J'essaie d'utiliser une DLL non gérée C++ dans un projet C# et j'obtiens une erreur lorsque j'essaie d'appeler une fonction indiquant que le point d'entrée est introuvable.Point d'entrée introuvable Exception
public class Program
{
static void Main(string[] args)
{
IntPtr testIntPtr = aaeonAPIOpen(0);
Console.WriteLine(testIntPtr.ToString());
}
[DllImport("aonAPI.dll")]
public static extern unsafe IntPtr aaeonAPIOpen(uint reserved);
}
Voici le dumpbin pour la fonction:
5 4 00001020 [email protected]@[email protected]
j'ai changé l'importation dll à [DllImport("aonAPI.dll", EntryPoint="?aaeonAPIOpen")]
et [DllImport("aonAPI.dll", EntryPoint="_aaeonAPIOpen")]
et pas de chance.
+1, ne réalisait pas que vous pouviez le faire. Quelle est la sécurité de cette approche? Le nom modifié change-t-il de la construction à la construction ou est-il cohérent entre les versions du même code? – JaredPar
@Jared: le mangling est purement basé sur la déclaration de la fonction C++. C'est pourquoi undname.exe peut fonctionner. C'est stable tant que la déclaration ne change pas. Cela le rend * plus sûr * qu'une déclaration externe "C". –