我得到的错误是:"DWORD GetModuleFileNameW(HMODULE,LPWSTR,DWORD)' : cannot convert parameter 2 from 'char *' to 'LPWSTR"
在这条线上
GetModuleFileName(NULL, &strL[0], MAX_PATH);
这个代码
BOOL APIENTRY DllMain(HMODULE hModule, DWORD fdwReason, LPVOID lpReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
{
std::string strL;
strL.resize(MAX_PATH);
GetModuleFileName(NULL, &strL[0], MAX_PATH);
DisableThreadLibraryCalls(hModule);
if(strL.find("notepad.exe") != std::string::npos)
{
gl_hThisInstance = hModule;
LoadOriginalDll();
}
break;
}
case DLL_PROCESS_DETACH:
{
ExitInstance();
break;
}
}
return TRUE;
}
最佳答案
从MSDN,
typedef wchar_t* LPWSTR, *PWSTR;
因此,它期望使用
wchar_t *
(wchar_t为2个字节或更多),但是&std::string[0]
是char*
(char为字节)。您需要改用std::wstring
:std::wstring strL;
关于c++ - C2664错误,C++对我来说是陌生的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20307188/