如何使用 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

将 Visual Studio 安装项目转换为 WIX

如何删除 Visual Studio 2012 的 Blend?

Visual Studio 2012 中的 Phonegap:如何使用 console.log?