2012-10-04 28 views
5

Este proyecto consiste en un único archivo .cpp que llama a LoadLibrary() para cargar un archivo dll.LoadLibrary no se puede cargar DLL con el código de error 126, cuando se construye en Visual Studio

Lo que pasa es que si corro el siguiente a través de la Microsoft Visual Studio 2012 símbolo de sistema:

cl /nologo Test.cpp 

Todo funciona bien.

Por otro lado, si inicio un proyecto simple de Visual C++, agrego el archivo y lo compilo hasta allí, la llamada LoadLibrary() falla con código 126: No se pudo encontrar el módulo especificado.

El .exe que construyo desde la línea de comandos es más del doble del tamaño que el construido en Visual Studio. Así que supongo que hay una conexión estática pasando.

El archivo .dll está bien, y está en el mismo directorio que el archivo .exe.

Respuesta

7

Me di cuenta.

De manera predeterminada, el comando cl utiliza el juego de caracteres multibyte. Mientras que los nuevos proyectos configurados en Visual Studio están configurados para Unicode.

+0

gracias por compartir – Albertino80

+1

Muchas gracias por la punta. Tuve que eliminar la configuración estándar del proyecto que definía UNICODE y _UNICODE para que funcione en una aplicación de escritorio expreso VS 2013 precocida. Por lo tanto, si tiene indicadores de compilador/D "UNICODE" y/D "_UNICODE", y obtiene el infame error 126, deshágase de ellos. – Leo

2

si la función LoadLibrary falla con el error 126 que muestra claramente que no era capaz de encontrar la biblioteca. para que pueda verificar esta función aplicando la ruta completa en el argumento de Loadlibrary. si funciona, entonces configure esa ruta en la variable PATH de la variable de entorno del sistema. porque la API Loadlibrary encuentra primero esa ruta completa, si no pudo encontrar la biblioteca en esa ruta, entonces la busca en el sistema PATH estándar.

0

¿su sistema operativo es de 64 bits?

He encontrado esta situación en mi win7 (64 bits), pero no en VS, photoshop (64 bits), matlab-2011a (64 bits). Indicaciones son las mismas: loadLibrary se produjo el error 126 ...

Por lo que yo sé “, que se está perdiendo una entrada de registro crítico para su funcionalidad. Específicamente, cada vez que una aplicación solicita acceso OpenGL, atig6pxx.dll de AMD entra en acción. A continuación, echa un vistazo dentro de HKLM \ SYSTEM \ CurrentControlSet \ Control \ Class {4d36e968-e325-11ce-bfc1-08002be10318} \ 0000 y carga el componente OpenGL como se especifica en OpenGLVendorName (64 bits) o OpenGLVendorNameWow (32-bit) “.

se puede hacer referencia a este blog (enter link description here), y se da la solution.I intentó y worked.or se puede hacer referencia a este foro (enter link description here .)

espero que podría resolver el problema, vaya suerte :)

Cuestiones relacionadas