Tengo una biblioteca que consta de dos partes: un ensamblado .net que P/Invokes a un dll de terceros nativo. En el modo de escritorio esto funciona bien: sin embargo, al hacer referencia al ensamblado desde una aplicación de estilo Metro y ejecutarlo, arroja un System.DllNotFoundException
en el P/Invoke quejándose de que "No se puede cargar la 'biblioteca' DLL: no se pudo encontrar el módulo especificado."Cómo P/Invocar a un dll nativo de Metro?
El dll nativo no hace nada especial, pero solo crea conexiones TCP/IP salientes a un servidor. El sistema no puede saber esto, pero el dll nativo podría hacer cualquier cosa. Es por eso que sospecho que podría no ser posible hacer esto.
Algunas órdenes de búsqueda dll se mencionan en msdn con respecto a las aplicaciones de estilo Metro, dando a entender que es posible cargar dlls nativos?
También encontré este link on msdn hablar de "bibliotecas" de carga y menciona la PackageDependency en el archivo de manifiesto, pero a mí aún no está claro cómo agregar un archivo DLL nativo al paquete de una manera que es posible P/Invoke se.
¿Puedes intentar comentar las cosas de TCP/IP en la DLL y volver a probar? Eso distinguirá no encontrar la DLL de no encontrar sus dependencias. Además, ¿marcó las capacidades que desea usar para la conexión de Internet saliente? –
No construí el dll. No es parte de la solución. Entonces no puedo cambiar la forma en que se construyó el dll. ¡Buen punto de que podría ser una dependencia secundaria que causa el error! Lo comprobaré lo antes posible. – vidstige
@vidstige Probablemente ya hayas resuelto este problema, pero por lo demás echa un vistazo a [mi respuesta] (http://stackoverflow.com/a/12122750/650012) a una pregunta relacionada. –