Hace un tiempo que vengo usando visual c++ 2008, me encanta. ;D
El problema esta cuando quiero compartir mis programas salta un cartelito que dice que falta el msvcr90.dll. :-(
Y para colmo yo no recuerdo usar esa dll. Hay alguna manera de solucionar esto? :-\
:¬¬
Busca las opciones de la Run Time Library, lo que queres es que sea una libreria estatica (.lib), de esta manera tu ejecutable sera mas grande al contenerla pero no tendra dependencias por la RTL.
Para linkear la RTL como .lib vas a Project->Properties->C/C++->Code Generation y en "Runtime Library" pones Multi-threaded (/MT) .
Si no necesitas las API's de la RTL usa la directiva "/NODEFAULTLIB" en el linker, pero seguro te canta algún error que tendrás que arreglar.
Saludos :P
me salen estos errores :huh:
main.obj : error LNK2001: unresolved external symbol __imp__fopen
main.obj : error LNK2001: unresolved external symbol __imp__fprintf
main.obj : error LNK2001: unresolved external symbol __imp__fclose
LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
creo que me paso a devcpp, pero este no incluye gdi+ :(
seguire intentando
Eso es por usar, sin necesidad, el /NODEFAULTLIB. Para Windows VC++ es el mejor compilador, no te cambies, lee un poco la ayuda.
Cita de: river_0119 en 22 Mayo 2010, 14:16 PM
me salen estos errores :huh:
main.obj : error LNK2001: unresolved external symbol __imp__fopen
main.obj : error LNK2001: unresolved external symbol __imp__fprintf
main.obj : error LNK2001: unresolved external symbol __imp__fclose
LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup
creo que me paso a devcpp, pero este no incluye gdi+ :(
seguire intentando
Jaja, claro, es que SÍ estás usando apis de la RTL, entonces no puedes usar /NODEFAULTLIB. Haz el cambio que te dije para compilar con el lib de la RTL y listo, como dice Eternal Idol, VC++ es el mejor :P .
Saludos
;-) funciona a la perfeccion
pero el problema es que incrementa el tamano del ejecutable de 9KB a 62KB
;D
talvez pueda solucionar los problemas anteriores con otros metodos :-\
[/NODEFAULTLIB]
para los tres primeros creo que puedo usar las apis de windows,
y para el ultimo error e visto un manual de crear un runtime propio o algo asi (no recuerdo donde e visto eso)
estoy en lo correcto?
;D
¿62KB es un problema?
si :)
¿Existe alguna razon real?
Si es un problema limitate a no usar la CRT, y usa sólo API's de Win:
main.obj : error LNK2001: unresolved external symbol __imp__fopen: Cambia fopen por CreateFile (http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx)
main.obj : error LNK2001: unresolved external symbol __imp__fprintf: WriteFile (http://msdn.microsoft.com/en-us/library/aa365747(VS.85).aspx)
main.obj : error LNK2001: unresolved external symbol __imp__fclose: CloseHandle (http://msdn.microsoft.com/en-us/library/ms724211(VS.85).aspx)
LINK : error LNK2001: unresolved external symbol _WinMainCRTStartup: Utiliza la directiva /ENTRY:main
O construye tu CRT (http://www.solocodigo.com/index.php?opt=viewitem&id=177&type=4&node=1), puedes redefinir las API's que te dan error como implementaciones de las API's de Win antes mencionadas.
Saludos
gracias a todos por su la ayuda ;-)
pero hay un detalle que no he podido solucionar
cuando pongo el "/NODEFAULTLIB" quita todas las lib. incluso las que estoy declarando, por ejemplo
#pragma comment(lib, "psapi.lib")
se que "/NODEFAULTLIB" tiene una opcion para quitar solo la lib deseada, en este caso solo quiero quitar la lib de msvcr90.dll
:silbar:
EI: juntando mensajes,
tal vez a alguien le interese
con esto quito la msvcr90.dll
#pragma comment(linker, "/NODEFAULTLIB:MSVCRT.lib")
me daban algunos errores y agrege esta lib
#pragma comment(lib, "libcmt.lib")
y problema solucionado
y tambien tuve que quitar el archivo manifest porque sino daba otro error
:-X
esta bien lo que estoy haciendo?