c++ - How do I make a static library Release/Debug independent in VS2010 Express? -
i programming application , linking against sdl , opengl. in code have following lines:
#pragma comment(lib, "sdl.lib") #pragma comment(lib, "sdlmain.lib") #pragma comment(lib, "opengl.lib")
this works in release mode only. in debug mode, receive following linker error:
libcmt.lib(invarg.obj) : error lnk2005: __initp_misc_invarg defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: __call_reportfault defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: __set_invalid_parameter_handler defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: __get_invalid_parameter_handler defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: __invoke_watson defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@yaxpbg00ii@z) defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: __invalid_parameter defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@yaxpbg00ii@z) defined in libcmtd.lib(invarg.obj) libcmt.lib(invarg.obj) : error lnk2005: ___pinvalidarghandler defined in libcmtd.lib(invarg.obj) libcpmtd.lib(xdebug.obj) : warning lnk4098: defaultlib 'libcmt.lib' conflicts use of other libs; use /nodefaultlib:library
i have compiled sdl source application, can control compiler flags.
when specify /nodefaultlib:"libcmt.lib" or /nodefaultlib:"libcmt" project sdlmain, utility dumpbin.exe still reports following after compilation sdlmain.lib:
linker directives ----------------- /defaultlib:"libcmt" /defaultlib:"oldnames"
these linker directives not appear when use dumpbin against opengl.lib (which came vs2010 express). opengl.lib works in both release , debug modes. sdl.lib works in both release , debug modes because, think, dll lib , not static lib.
what doing wrong here?
edit:
i managed compile , link adding /nodefaultlib:libcmt.lib own debug configuration instead of sdlmain. assumed opengl lib static library, it's not, it's dll lib also.
in vs2005 in project configuration, under linker options, set "ignore specific library" libcmt.lib . vs2010 config might similar. in case, please try ignore libcmt.lib , see happens.
-- pete
Comments
Post a Comment