我想使用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;
}