Ben*_*Ben 9 c++ windows dll loadlibrary
我想使用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;
}
Run Code Online (Sandbox Code Playgroud)
Han*_*ant 19
使用LoadLibraryA(),它需要一个const char*.
带有字符串的Winapi函数有两个版本,一个采用Ansi字符串的A版本和一个采用宽字符串的W版本.函数名称的宏(如LoadLibrary)可以扩展为A或W,具体取决于UNICODE是否为#defined.您正在使用有效的#define编译程序,因此您将获得LoadLibraryW().简单地作弊并使用LoadLibraryA().
| 归档时间: |
|
| 查看次数: |
10636 次 |
| 最近记录: |