比较VS中两个C++项目的区别

Posted

技术标签:

【中文标题】比较VS中两个C++项目的区别【英文标题】:Comparing the difference of two C++ projects in VS 【发布时间】:2017-06-07 14:03:35 【问题描述】:

我想创建一个与 kinect v2 标准代码束相同的代码的新项目。 我在 Visual Studio 中创建了一个新项目,并将另一个项目的示例文件副本添加到新目录中,并将其添加到我的项目中。 我还添加了所有标题等。 然后尝试编译它,它会产生很多错误!但它在示例项目中运行良好。 CPP 文件和标题都相同。 那么有什么问题呢? 我将 VC++ 目录中的包含目录更改为 $(KINECTSDK20_DIR)\inc;$(IncludePath) 并且一些错误消失了,但仍然有错误! 这些是错误:

HCURSOR LoadCursorW(HINSTANCE,LPCWSTR)
HICON LoadIconW(HINSTANCE,LPCWSTR)
'=': cannot convert from 'const wchar_t [25]' to 'LPCSTR'
'ATOM RegisterClassW(const WNDCLASSW *)': cannot convert argument 1 from 'WNDCLASS *' to 'const WNDCLASSW *'
'HWND CreateDialogParamW(HINSTANCE,LPCWSTR,HWND,DLGPROC,LPARAM)': cannot convert argument 2 from 'LPSTR' to 'LPCWSTR'
'HRESULT StringCchPrintfA(STRSAFE_LPSTR,std::size_t,STRSAFE_LPCSTR,...)': cannot convert argument 1 from 'WCHAR [64]' to 'STRSAFE_LPSTR'
'BOOL SetDlgItemTextA(HWND,int,LPCSTR)': cannot convert argument 3 from 'WCHAR *' to 'LPCSTR'

抱歉我的英语语法不好!

【问题讨论】:

没有这些错误,就不可能知道发生了什么。 用工具比较 .vcxproj(和 .props,如果有的话) @BartekBanachewicz 我如何向您展示整个项目? 您应该首先将您遇到的实际错误粘贴到问题中 @Ceros 我复制并粘贴 .vcxproj 文件并更正名称仍然无效 【参考方案1】:

您的项目肯定有错误的字符集设置。您可以找到如何更改它here。

一个死的赠品是很多cannot convert 'WCHAR *' to 'LPCSTR' 和类似的。 WCHAR*LPWSTRLPWSTR 将转换为 LPCWSTR1,但不会转换为 LPCSTR - 这通常意味着将宽字符文字传递给解析为窄字符版本的函数当前项目设置。

精心编写的项目可以在这两种设置下编译,但大多数时候只使用其中一种,因此在构建之前必须正确选择。


1 您可以在需要 const 的地方传递非 const,但不能更改指向的字符类型。

【讨论】:

以上是关于比较VS中两个C++项目的区别的主要内容,如果未能解决你的问题,请参考以下文章

VS2008(C++)-控制台项目中LNK2005错误的问题

VS2005和VS2008做的项目有啥区别

VS2010之C++

如何用Code Blocks创建C++控制台项目

vs2010 怎么给c++项目预设命令行参数

vs cpp文件在哪里,建的项目写了c++,但是在项目文件目录里找不到cpp文件