源代码如下:
//将live_player路径添加到系统path环境变量,则sdk的所有dll都可以正常加载了
std::wstring sdk_path = QPath::GetAppPath() + L"live_player\\";
if (!shared::tools::AddPathToEnvironmentVariable(sdk_path))
{
MessageBox(NULL, L"未找到sdk目录", L"提示", MB_OK);
return 0;
}
在别的机子上,运行时,是没问题的
但在我的机子上运行时,DLL调用失败,
经调试,最后确认,添加环境变量时有问题,可能是和之前配置的环境变量有冲突
源环境变量配置如下:
将dll路径添加到最后面
bool AddPathToEnvironmentVariable(const std::wstring& path)
{
if (!nbase::FilePathIsExist(path, true)) //目录不存在
return false;
TCHAR path_envirom[4096] = { 0 };
GetEnvironmentVariableW(L"path", path_envirom, 4096);
std::wstring new_envirom = path_envirom;
new_envirom.append(L";");
new_envirom.append(path);
return !!SetEnvironmentVariableW(L"path", new_envirom.c_str());
}
将其改为,将DLL路径添加到最前面后, 就正常了
bool AddPathToEnvironmentVariable(const std::wstring& path)
{
if (!nbase::FilePathIsExist(path, true)) //目录不存在
return false;
TCHAR path_envirom[4096] = { 0 };
GetEnvironmentVariableW(L"path", path_envirom, 4096);
std::wstring new_envirom = path;
new_envirom.append(L";");
new_envirom.append(path_envirom);
return !!SetEnvironmentVariableW(L"path", new_envirom.c_str());
}