gpt4 book ai didi

C++ 在 Unicode Release MinDependency 中编译错误,但在 Debug 中没有

转载 作者:行者123 更新时间:2023-11-30 02:12:58 25 4
gpt4 key购买 nike

首先让我说我负责创建和管理构建和安装,我不是 C++ 开发人员,所以下面的大部分错误对我来说都是不可理解的。

据说开发人员(现在不在身边)检查了一些在 Debug|Win32(使用 VS08)中编译良好的代码,但我需要让它在 Unicode Release MinDependency|Win32 中编译。

有 88 个错误,但似乎都归结为“转换”问题,而且都是下面列出的错误的多次出现。

  • 编译错误是否与它的编码方式(C++、ATL)有关?

  • 是否有一些编译选项开关或 VS 设置我可以更改以使其编译为 MinDep?

  • 是否有关于造成这种情况的原因的简要说明,以便我了解手头的问题?

错误:

cannot convert from 'unsigned short *' to 'ATL::CComBSTR'
cannot convert from 'wchar_t *' to 'unsigned short *'
cannot convert parameter 1 from 'unsigned short *' to 'wchar_t *'
cannot convert parameter 1 from 'LPWSTR' to 'const unsigned short *'
cannot convert parameter 2 from 'BSTR' to 'const unsigned short *'
cannot convert parameter 2 from 'LPWSTR' to 'const unsigned short *'
none of the 2 overloads could convert all the argument types
cannot convert parameter 1 from 'unsigned short *' to 'const OLECHAR *'
cannot convert parameter 1 from 'unsigned short [4096]' to 'wchar_t *'

最佳答案

问题是代码写的不好。开发人员对在 Unicode 中编译时不成立的字符和整数类型做出了假设。问题不在于 Visual C++、ATL 或 Visual Studio。

显然,您可以使用一个编译器开关来编译它,因为这可能是 Debug 版本和 Unicode Release Mindependency 版本之间的主要区别。但是,您不想切换它,因为这意味着您不再进行实际的 Unicode Release Mindependency 构建。

您会注意到,您的每条转换消息都位于 unsigned short *(指向特定整数类型的指针)和某种字符串表示形式之间。在正确编写的 C++ 中,您不会到处都在整型和字符类型之间进行转换。这样做可能是必要的,例如在处理遗留代码时,但它是潜在问题的来源,需要仔细观察。

您需要重写此代码。您说开发人员不在(可能因为做这样的事情而被解雇了?),所以您必须找另一个开发人员来修复它。

关于C++ 在 Unicode Release MinDependency 中编译错误,但在 Debug 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1213976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com