如何使用 Visual Studio 2012 构建 cppunit
Posted
技术标签:
【中文标题】如何使用 Visual Studio 2012 构建 cppunit【英文标题】:How to build cppunit with Visual Studio 2012 【发布时间】:2013-02-21 13:08:19 【问题描述】:我从http://cppunit.svn.sourceforge.net/ 获得了 cppunit,它一直运行良好,直到我需要在 Visual Studio 2012 中重建它。
所以我从 ..\branches\HB_VS2010\cppunit\ 打开解决方案,将所有项目更新到 v110,添加 x64 平台用于发布配置并尝试构建它。
发生的错误是error C2440: 'static_cast' : cannot convert from 'void (__cdecl cdxCDynamicDialog::* )(UINT)' to 'void (__cdecl CWnd::* )(UINT_PTR)'
当我尝试在 debug/win32 或 release/win32 中构建时 - 一切正常。
有人可以帮忙吗?
【问题讨论】:
【参考方案1】:我在尝试为 64 位构建 cppunit 时遇到了同样的错误。对我有用的是更改其中两个函数的签名。
在 cdxCDynamicDialog 类中
afx_msg void OnTimer(UINT nIDEvent);
成为
afx_msg void OnTimer(UINT_PTR nIDEvent);
以便签名匹配 CDialog::OnTimer 函数。
在此之后,我还更改了 cdxCDynamicWnd
void DoOnTimer(UINT nIDEvent);
成为
void DoOnTimer(UINT_PTR nIDEvent);
这不会在 32 位构建中引起问题,因为在该平台上 UINT 与 UINT_PTR 相同。
【讨论】:
也就是说,UINT 在 x64 上仍然是 32 位类型,而 UINT_PTR 在 x64 上是 64 位类型,在 x86 上是 32 位类型。以上是关于如何使用 Visual Studio 2012 构建 cppunit的主要内容,如果未能解决你的问题,请参考以下文章
visual studio 2012中如何查看一个工程需要哪些dll文件???
Visual Studio 命令行 (devenv) 和 IDE 构建有啥区别?
如何使用 Visual Studio 2012 构建 cppunit