Esto es para todos los gurús de C#. Me he estado dando vueltas en esto desde hace un tiempo, intenté todo tipo de consejos en la red sin ningún resultado. La acción está sucediendo en Windows Mobile 5.0.¿Cómo resuelvo la excepción .NET CF "No se puede encontrar la DLL de Invoke"?
Tengo un archivo DLL llamado MyDll.dll. En el MyDll.h tengo:
extern "C" __declspec(dllexport) int MyDllFunction(int one, int two);
La definición de MyDllFunction en MyDll.cpp es:
int MyDllFunction(int one, int two)
{
return one + two;
}
La clase C# contiene la siguiente declaración:
[DllImport("MyDll.dll")]
extern public static int MyDllFunction(int one, int two);
en el mismo clase Estoy llamando a MyDllFunction de la siguiente manera:
int res = MyDllFunction(10, 10);
Y aquí es donde lo sangriento me sigue dando "No se puede encontrar la DLL de PInvoke 'MyDll.dll'". He comprobado que realmente puedo hacer lo PInvoke en llamadas al sistema, como por ejemplo "GetAsyncKeyState (1)", declaró como:
[DllImport("coredll.dll")]
protected static extern short GetAsyncKeyState(int vKey);
El Mydll.dll está en la misma carpeta que el ejecutable, y también he intenté ponerlo en la carpeta/Windows sin cambios ni éxito. Cualquier consejo o solución es muy apreciado.
Asegúrese de tener suficiente memoria virtual libre, ya que la importación P/Invoke puede fallar en eso. – arul
¿Ha agregado el dll como referencia en su proyecto? Si lo hace, entonces no necesitará copiar el archivo manualmente.Si el problema persiste, es probable que se deba a que el archivo dll no se compiló correctamente (quizás una plataforma diferente). – kgiannakakis
Ambos proyectos están en la misma solución y se implementan juntos, no es necesario cargarlos manualmente. –