在VS2010上选用release,在静态库中使用MFC来编译出现的问题

wyxu_blue 2012-05-03 12:15:40
我的程序在VS2010开发平台上选用debug模式,无论是静态编译还是动态编译都可以正常编译通过,并且生成的EXE程序正常运行。在release模式,使用动态编译也可以正常编译通过,但是采用静态编译即把MFC的使用选为“在静态库中使用MFC”,运行库选择“多线程(/MT)”,就会出现以下的错误(我也已经把release的编译环境改成与debug的编译环境一样了):(请各位大虾帮忙,在此先感谢了)
1>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\cstringt.h(1362): error C2664: “__noop”: 不能将参数 1 从“bool”转换为“const char *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1> C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\cstringt.h(1361): 编译类 模板 成员函数“int ATL::CStringT<BaseType,StringTraits>::Compare(const char *) const”时
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC<char>
1> ]
1> C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\afx.h(912): 参见对正在编译的类 模板 实例化“ATL::CStringT<BaseType,StringTraits>”的引用
1> with
1> [
1> BaseType=char,
1> StringTraits=StrTraitMFC<char>
1> ]

1>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(119): error C2664: “__noop”: 不能将参数 1 从“bool”转换为“const char *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1> C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(265): 参见对正在编译的函数 模板 实例化“void ATL::AtlConvAllocMemory<CHAR>(_CharType **,int,_CharType *,int)”的引用
1> with
1> [
1> _CharType=CHAR
1> ]
1> C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(258): 编译类 模板 成员函数“void ATL::CA2AEX<>::Init(LPCSTR) throw(...)”时
1> H6StreamHttp.cpp(77): 参见对正在编译的类 模板 实例化“ATL::CA2AEX<>”的引用
1>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(120): error C2664: “__noop”: 不能将参数 1 从“bool”转换为“const char *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\atlconv.h(121): error C2664: “__noop”: 不能将参数 1 从“bool”转换为“const char *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换

...全文
749 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyxu_blue 2012-05-12
  • 打赏
  • 举报
回复
我编译的环境也是多字集,所以很郁闷
lightout 2012-05-11
  • 打赏
  • 举报
回复
这个错误是你编译的时候,选择了UNICODE,选择多字符集就可以了
如果你坚持要用UNICODE,那所有的字符串都要加_T,例如 CString A = _T("我就日了还要用宽字符集")
以前用VC6的时候,是不会有这个问题的
wyxu_blue 2012-05-03
  • 打赏
  • 举报
回复
没人遇到过此问题吗?

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧