¿Hay alguna forma de que la DLL particular a la que hace referencia una firma P/Invoke (DllImport) dependa de la arquitectura de la CPU?P/invocación independiente de la arquitectura de la CPU: ¿Puede el DllName o la ruta ser "dinámico"?
Estoy trabajando en una aplicación que carga una gran cantidad de firmas de métodos de un dll nativo de un proveedor tercero, en este caso, la DLL de la interfaz de espacio de usuario a una pieza de hardware. Ese proveedor ahora ha comenzado a suministrar las versiones x86 y x64 de la DLL ahora, y creo que mi aplicación se beneficiaría de ejecutarse como un proceso de 64 bits. Excepto por esta DLL, todo es código .NET, por lo que funcionar como "Cualquier CPU" funcionaría.
Todas las firmas de métodos en la DLL nativa son las mismas en 64 bits, sin embargo, el nombre de la DLL es diferente (Foo.dll vs. Foo_x64.dll). ¿Hay alguna forma, ya sea a través de las firmas P/Invoke o las entradas de app.config, de que pueda elegir qué DLL cargar según la arquitectura de la CPU en ejecución?
Si en lugar de diferentes nombres de DLL tiene el mismo nombre en diferentes carpetas, ¿abre alguna otra opción?
NB: Dado que es esencial que la versión de esta DLL de espacio de usuario coincida con el controlador kernel instalado para el hardware, la DLL no se incluye con nuestra aplicación, sino que dependemos del instalador de proveedor para colocarla en un directorio en% PATH%.
Posible duplicado de http: // stackoverflow.com/preguntas/23215518/meta-32-bits o 64-bits nativo-dll-función-en-medio ambiente –
Creo que la duplicación es al revés, dada a esta pregunta es cuatro años mayor que que uno :) – Cheetah