Error LNK2001: InitCommonControls
Error al compilar con Visual C++
Hoy casualmente estoy programando con Visual C++ 2010 y a la hora de generar el ejecutable recibo el siguiente error:
error LNK2001: símbolo externo __imp__InitCommonControls@0 sin resolver
Este error suele ser muy común. Lo primero que nos dice es: error LNK2001. Si le preguntamos a Microsoft (lo primero que hago) sobre este inconveniente, nos muestra lo siguiente: http://msdn.microsoft.com/es-es/library/f6xx1b1z%28v=VS.100%29.aspx. Nos indica que el problema es del vinculador, que no encuentra en este caso la función InitCommonControls en las bibliotecas y archivos objeto. A mi me ha resultado curioso que no pueda resolver InitCommonControls(), pensaba que estaría añadida por defecto.
Como sabes, lo primero es incluir el encabezado en el ámbito global: #include "commctrl.h"
commctrl.h: Interface for the Windows Common Controls
Y ahora para resolver el error, nos está diciendo que el vinculador necesita una dependencia adicional. Para ello vamos al menú Proyecto -> Propiedades de tu proyecto (Alt + F7).
En la ventana que sale vamos a Vinculador -> Entrada
Seleccionamos dependencias adicionales (). Y pegamos ahí lo siguiente: ComCtl32.Lib
Imagen:
Aceptamos y todo arreglado.
Otra forma
Otra forma igual que podemos hacer para resolver esto es añadir en nuestro código .cpp lo siguiente:
#pragma comment(lib, "ComCtl32.Lib")
Microsoft nos especifica que hemos añadido una dependencia al vinculador: http://msdn.microsoft.com/en-us/library/7f0aews7%28v=VS.100%29.aspx
De todos modos, nunca he intentado compilar eMule. Echa antes un vistazo a este hilo a ver si te ayuda:
forum.emule-project.net/index.php?showtopic=84176&hl=build