Estoy tratando de usar un dll no administrado de C++ en un proyecto de C# y me aparece un error al intentar llamar a una función que dice que no se puede encontrar el punto de entrada.No se encuentra el punto de entrada Excepción
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);
}
Aquí es el dumpbin para la función:
5 4 00001020 [email protected]@[email protected]
me cambió la importación DLL para [DllImport("aonAPI.dll", EntryPoint="?aaeonAPIOpen")]
y [DllImport("aonAPI.dll", EntryPoint="_aaeonAPIOpen")]
y sin suerte.
+1, no se dio cuenta de que podía hacer eso. ¿Qué tan seguro es este enfoque? ¿El nombre destruido cambia de una generación a otra o es consistente en las construcciones del mismo código? – JaredPar
@Jared: el cambio se basa puramente en la declaración de la función C++. Por eso undname.exe puede funcionar. Es estable siempre y cuando la declaración no cambie. Esto lo hace * más seguro * que una declaración "C" externa. –