一个程序,用的得VTL。/MTd方式编译没有问题,但生成的exe拷到别的电脑出现缺少VTL100.dll所以想改成/MT方式编译。结果出现许多错误。。摘出一两个大家帮看看。LNK2001: 无法解析的外部符号 __CrtDbgReport atlsd.lib(AtlTraceModuleManager.obj)
LNK2001: 无法解析的外部符号 __CrtDbgReportW atlsd.lib(AtlTraceModuleManager.obj) error LNK2019: 无法解析的外部符号 __CrtDbgReport,该符号在函数 "void __cdecl `dynamic initializer for 'public: static class ATL::CTrace ATL::CTrace::s_trace''(void)" (??__E?s_trace@CTrace@ATL@@2V12@A@@YAXXZ) 中被引用 atlsd.lib(Externs.obj) error LNK2019: 无法解析的外部符号 __CrtDbgReportW,该符号在函数 "public: int __thiscall ATL::CAtlExeModuleT<class CFirendModule>::WinMain(int)" (?WinMain@?$CAtlExeModuleT@VCFirendModule@@@ATL@@QAEHH@Z) 中被引用 Firend.obj Firend

解决方案 »

  1.   

    好了,改成Release就可以了,估计是对应的库不一致。。进来的接分。。
      

  2.   

    /MTd 和 /MT只是Debug和Release之间的差别,如果/MTd在别的电脑上差一个DLL,那么Release版也同样存在这样的问题呀?
      

  3.   


    我也奇怪,但改成Release就好了
      

  4.   

    工程设置里有一个是否是用Minize CRT Use in ATL的选项。
    这个设置为No应该就没问题了。
      

  5.   

    /MTd是Debug版的编译选项,你把debug版本的编译选项设置为/MT非debug版编译当然不行了