gpt4 book ai didi

c++ - LoadLibrary 采用 LPCTSTR

转载 作者:可可西里 更新时间:2023-11-01 12:42:18 25 4
gpt4 key购买 nike

我想使用 LoadLibrary 开发一个插件系统。
我的问题是:我希望我的函数采用 const char*LoadLibrary 采用 LPCTSTR
我有一个聪明的想法来做(LPCSTR)path,它一直给我一个模块未找到错误。

当前代码如下。如果我取消注释 widepath = L.. 行,它工作正常。我已经阅读了使用 MFC 的解决方案,但我不想使用 MFC。

当前代码:

bool PluginLoader::Load(char *path)
{
path = "Release\\ExamplePlugin.dll";
LPCTSTR widepath = (LPCTSTR)path;
//widepath = L"Release\\ExamplePlugin.dll";

HMODULE handle = LoadLibrary(widepath);
if (handle == 0)
{
printf("Path: %s\n",widepath );
printf("Error code: %d\n", GetLastError());

return false;
}

int (*load_callback)() = (int (*)()) GetProcAddress(handle, "_plugin_start@0");

if (load_callback == 0)
{
return false;
}

return load_callback() == LOAD_SUCCESS;
}

最佳答案

使用 LoadLibraryA(),它需要一个 const char*。

采用字符串的 Winapi 函数存在两个版本,采用 Ansi 字符串的 A 版本和采用宽字符串的 W 版本。函数名称有一个宏,如 LoadLibrary,它扩展为 A 或 W 风格,具体取决于 UNICODE 是否为#defined。您正在使用有效的 #define 编译您的程序,因此您将获得 LoadLibraryW()。简单地作弊并显式使用 LoadLibraryA()。

关于c++ - LoadLibrary 采用 LPCTSTR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208415/

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