2011-09-06 27 views
5

Tengo un exe que depende de libeay32.dll. Ambos compilados por 32 bits.Windows 7 64 bits incorrecta PATH al cargar la biblioteca de 32 bits para 32 bits exe

He copiado el archivo ejecutable en C: \ Archivos de programa (x86) \ app \ bin y el dll en C: \ Archivos de programa (x86) \ app \ lib. Para garantizar el correcto funcionamiento, he agregado C: \ Archivos de programa (x86) \ app \ lib a la ruta.

En Windows 7 64 bits, cuando ejecuto el exe, recibí un error de libeay32.dll no encontrado.

Al utilizar el walker de dependencias para 32 bits, la biblioteca está ubicada correctamente en C: \ Archivos de programa (x86) \ app \ lib. Al utilizar sysinternal process explorer, la aplicación se ejecuta correctamente. Usar cmd también funciona. Utilizando el andador de dependencias para 64 bits, puedo ver las bibliotecas que faltan. Copiar los dos archivos juntos o dll a syswow64 también funciona perfectamente.

Si la solicitud fue compilado para 32 bits ...

ventanas Por qué isnt en busca de 32 bits de las bibliotecas? ¿Por qué no se resuelven las bibliotecas si el directorio ya está en la ruta?

Mi conjetura es que W7 está ignorando el camino, pero de acuerdo con esto: http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx que no deberia !.

¿Por qué no puedo ejecutar mi exe con dependencias ubicadas en la ruta? ¿Debo registrar la biblioteca o algo así?

Cualquier idea será muy apreciada.

EDIT:

El programa puesto en marcha su correcta/ejecutada cuando se hace de menú, inicio> programa, pero no directamente sobre el .exe ... wtf?

Usando procmon parece estar tratando de abrir (nota la falta de " "): 'C: \ Archivos de programa (x86) \ miaplicacion \ Terceros \ openssl \ libeay32.dll' pero en el camino de su correcta (revisado de nuevo: "C: \ archivos de programa (x86) \ miaplicacion \ terceros \ openssl")

RESPUESTA ?: hay un escenario know/error en el ajuste de "C: \ archivos de programa (x86) "en la ruta, ventanas principales intentan cargar" C: \ Archivos de programa (x86) "en su lugar ???? (consulte el uso de procmon sin CUALQUIER filtro)

Windows 7 x64 error?

+0

Por lo que sé, se consulta a PATH solo para localizar un EJECUTOR. Una Lib o DLL no se puede ejecutar por sí sola, solo admite otro ejecutable. – Arun

+2

@Arun: Windows usa la ruta para localizar las DLL. Ver http://msdn.microsoft.com/en-us/library/7d83bc18.aspx – shf301

+0

Malo, lo recupero. Sí lo hace. ¡Muchas gracias por corregir mi error! – Arun

Respuesta

0

Puede mezclar la lib en el mismo directorio, porque allí siempre verifica primero. Si se encuentra, se usa. En sistemas de Windows de 64 bits, puede (no intentado) también mover las bibliotecas a la carpeta SystemWOW64 donde están almacenadas las versiones de 32 bits, pero recomendaría la primera versión.

Cuestiones relacionadas