Respuesta

10

El CLR tiene soporte de cargador especial para la opción/ANYCPU.

Si realmente quiere hacer esto para nativo, la mejor manera de hacerlo es:

  1. Construye tu binario para 32 y 64 bits
  2. Como parte de la construcción de la Binario de 32 bits, incluya el binario de 64 bits como recurso
  3. En máquinas de 32 bits, simplemente ejecute el binario de 32 bits
  4. En equipos de 64 bits, cuando se ejecuta el binario de 32 bits, descomprima el 64 -bit recurso binario, escríbalo en el disco y ejecútelo desde allí

Así es como funcionan las herramientas Sysinternals (descargue Process Explorer en una máquina de 64 bits y ejecútelo: verá que escribe procexp64.exe en el disco y luego lo ejecuta desde allí). Es un truco, pero funciona.

5

No que yo sepa - el problema es que

  1. usted necesitará código separado; esto funciona para C# porque está generando .NET IL que se convierte a código nativo en el sistema de destino
  2. el formato Windows PE solo tiene un encabezado de imagen y no hay forma de encadenarse a otro encabezado más adelante para poner ambos conjuntos de código en la misma biblioteca.

Lo mejor que podrías hacer por un .EXE fue enviar un .exe de 32 bits que verifica si está ejecutando WOW64 y luego genera la versión de 64 bits. No puedo pensar en un truco equivalente para las bibliotecas, sin embargo, tiene que coincidir con los bits del proceso de host para cargar en primer lugar.

Cuestiones relacionadas