- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个我无法理解的编译错误。我有两个使用 WLT 8.0 的 C++ 项目。我正在使用 VS2005 来编译两者。一个在 Win XP 或 7 上运行,另一个在 CE 上运行。它们都包含 WLT 8.0 header 。
但在为 CE 项目编译时出现以下错误:
Error 104 error C2084: function 'HRESULT ATL::CComModule::RegisterClassObjects(DWORD,DWORD) throw()' already has a body C:\WTL80\include\atlapp.h 150
此错误的来源在这里:
namespace ATL
{
inline HRESULT CComModule::RegisterClassObjects(DWORD /*dwClsContext*/, DWORD /*dwFlags*/) throw()
{ return E_NOTIMPL; }
inline HRESULT CComModule::RevokeClassObjects() throw()
{ return E_NOTIMPL; }
}; // namespace ATL
我唯一能看到这两个项目的不同之处是 CE 项目中的这些宏:(_WIN32_WCE=$(CEVER);ARM;_ARM_;$(CePlatform);ARMV4I;UNDER_CE=$(CEVER );)
,我无法在CE工程中设置__cdecl
的默认调用约定。
任何有线索的人都会喜欢这种教育。
提前致谢。
最佳答案
这是由于 WTL 的 atlapp.h
和 ATL 的 atlbase.h
不兼容造成的。它只会发生在 WinCE 项目 #ifdef _WIN32_WCE
上。所以,我认为答案是注释掉损坏的 WTL 部分。
在 atlapp.h 中
// namespace ATL
// {
// inline HRESULT CComModule::RegisterClassObjects(DWORD /*dwClsContext*/, DWORD /*dwFlags*/) throw()
// { return E_NOTIMPL; }
// inline HRESULT CComModule::RevokeClassObjects() throw()
// { return E_NOTIMPL; }
// }; // namespace ATL
WTL 的这一部分可能是对 ATL 早期版本的补充,只是在 ATL 跟上速度时没有被删除。
-保罗
关于c++ - WTL Error : RegisterClassObjects(DWORD, DWORD) throw()' 已经有一个正文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4752698/
我正在将应用程序从 Visual Studio C++ 6.0 转换为 Visual Studio 2008,但遇到了 ATL 问题。 我遇到了一大堆问题,但这是两个不同编译器之间返回值不同的第一个调
我遇到了一个我无法理解的编译错误。我有两个使用 WLT 8.0 的 C++ 项目。我正在使用 VS2005 来编译两者。一个在 Win XP 或 7 上运行,另一个在 CE 上运行。它们都包含 WLT
我是一名优秀的程序员,十分优秀!