__invalid_parameter_noinfo is resolved by LIBCMT.LIB but not LIBCMTD.LIB

Hi

I'm having to define _SECURE_SCL=0 when compiling debug builds of my C++ applications which are built using the /MTd switch, otherwise the linker cannot resolve reference __invalid_parameter_noinfo. When the release build is generated using the /MT switch, there are no problems, since this reference is resolved by LIBCMT.LIB.

I've used DUMPBIN to try to find __invalid_parameter_noinfo in all the standard installed libraries, but it only seems to be present in LIBCMT.LIB and MSVCRT.LIB.

Is LIBCMTD.LIB incomplete or am I doing something wrong

Thanks



Answer this question

__invalid_parameter_noinfo is resolved by LIBCMT.LIB but not LIBCMTD.LIB

  • Paul Dettorre

    It is other way around. _invalid_parameter_noinfo function is used in Release mode, not in Debug mode. You have a mix of .obj compiled with both Release and Debug. Because STL is templates, this is resolved in compile time, so your object already references _inv_param_noinfo by the time it gets to linker.

    Check that all parts of your project are compiled in Debug mode both any file in your project and any static library it uses.

    Nikola

     



  • DotNetDevelop

    Hi Martin

    Sorry if I've not been clear, but it's the debug build I'm having trouble with, the release build is fine.

    Are you saying here that __invalid_parameter_noinfo is a release only build symbol


  • GregWold

    Is it possible that some files are compiled with _DEBUG set even in Release mode Or with a wron /MT switch set

  • __invalid_parameter_noinfo is resolved by LIBCMT.LIB but not LIBCMTD.LIB