源代码如下:
- //将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());
- }
联系客服