32bit-64bit registrar - ¿Cómo puedo probar un archivo DLL de Windows para determinar si es de 32 o 64 bits?




pero dllunregisterserver (5)

Esta pregunta ya tiene una respuesta aquí:

Me gustaría escribir un script o programa de prueba que afirme que todos los archivos DLL en un directorio dado son de un tipo de compilación particular.

Usaría esto como una comprobación de validez al final de un proceso de compilación en un SDK para asegurarme de que la versión de 64 bits no tenga de alguna manera algunos archivos DLL de 32 bits y viceversa.

¿Hay una manera fácil de mirar un archivo DLL y determinar su tipo?

La solución debería funcionar tanto en xp32 como en xp64.


Answers

Dependencia Walker lo dice todo (bueno casi). http://www.dependencywalker.com/

No se "instala"; simplemente consígalo, extráigalo y ejecute el exec. Funciona para cualquier aplicación de módulos de Windows x32 o x64.

Como recuerdo, es bastante sencillo ver todas las dependencias, es decir, los módulos dll, y desde la aplicación. es una suma de las dependencias que uno puede determinar si está llena x64, x32 (x86) o un poco de cada una.

El tipo de CPU para la que se construyó el módulo se encuentra en la columna "CPU". La mayoría de los aps de 64 bits son todavía un poco de cada uno, pero de 32 bits ap w / b todo x86.

Hermoso programa para geeks / programadores y es gratis ...


Una forma burda sería llamar a dumpbin con la opción de encabezados de las herramientas de Visual Studio en cada DLL y buscar el resultado apropiado:

dumpbin /headers my32bit.dll

PE signature found

File Type: DLL

FILE HEADER VALUES
             14C machine (x86)
               1 number of sections
        45499E0A time date stamp Thu Nov 02 03:28:10 2006
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
            2102 characteristics
                   Executable
                   32 bit word machine
                   DLL

OPTIONAL HEADER VALUES
             10B magic # (PE32)

Puede ver un par de pistas en esa salida de que es una DLL de 32 bits, incluido el valor de 14C que menciona Paul. Debe ser fácil de buscar en un script.


Si tiene instalado Cygwin (que recomiendo encarecidamente por varios motivos), puede usar la utilidad 'archivo' en la DLL

file <filename>

Lo que daría una salida como esta:

icuuc36.dll: MS-DOS executable PE  for MS Windows (DLL) (GUI) Intel 80386 32-bit


Yo tuve el mismo problema. Estaba usando Windows 8 con un sistema operativo de 64 bits. Acabo de cambiar la ruta a Program Files (x86) y luego comenzó a funcionar. Pongo esta línea en el archivo eclipse.ini:

-vm
 C:\Program Files (x86)\Java\jre7\bin\javaw.exe






windows dll 32bit-64bit