gpt4 book ai didi

c++ - 错误 C2664 : 'errno_t wcstombs_s(size_t *,char *,size_t,const wchar_t *,size_t)' : cannot convert parameter 4

转载 作者:行者123 更新时间:2023-11-28 05:20:42 30 4
gpt4 key购买 nike

error C2664: 'errno_t wcstombs_s(size_t *,char *,size_t,const wchar_t *,size_t)' : cannot convert parameter 4 from 'CHAR [260]' to 'const wchar_t *' 1>
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast

这个错误是什么意思?

我的职责是:

BOOL DependentDLLDisplay()
{
char arr[200];

if(!Module32First(hProcessSnap,&me32))
{
cout<<" ERROR : Failed to Get DLL Information"<<endl;
CloseHandle(hProcessSnap);
return FALSE;
}

cout<<endl<<"DEPENDENT DLL OF THIS PROCESS :"<<endl;
do
{
wcstombs_s(NULL,arr,200,me32.szModule,200);
cout<<arr<<endl;
}while(Module32Next(hProcessSnap,&me32));

CloseHandle(hProcessSnap);
return TRUE;
}

最佳答案

您的对象 me32 的类型为 MODULEENTRY32,定义如下:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms684225.aspx

作为第四个参数传递给“wcstombs_s”的 szModule 字段定义为:

TCHAR   szModule[MAX_MODULE_NAME32 + 1];

在Windows API中,TCHAR在MBCS编码中定义为char,在UNICODE编码中定义为wchar

您看到的错误表明您正在包含 Windows 库的 MBCS 版本,因此 MODULEENTRY32 实际上是 MODULEENTRY32Ame32.szModule 是一个 char[],但随后尝试将 me32.szModule 视为宽 wchar_t[] 字符串实际上是 Ansi char[] 字符串。

您可以通过更改项目设置来切换到 UNICODE 库,或者使用普通的 char 字符串拷贝来获取该字段的值。

或者,如雷米所说:

Or, you can explicitly use Module32FirstW()/Module32NextW(), MODULEENTRY32W, std::wcout, etc, or explicitly use Module32FirstA()/Module32NextA(), MODULEENTRY32A, etc. Either way, you do not have to change the project settings. Don't use TCHAR-based APIs anymore. In this case, since the code wants to end up with a char[] string, it makes sense to use Module32FirstA()/Module32NextA() and just remove wcstombs_s() altogether.

最后一点:您应该将局部变量扩展为与 szModule 相同的大小,而不是截断内容。

关于c++ - 错误 C2664 : 'errno_t wcstombs_s(size_t *,char *,size_t,const wchar_t *,size_t)' : cannot convert parameter 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41579009/

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