我想检查是否在使用 C++ 中的 Qt 的用户计算机上安装了 Matlab。这可能吗?我阅读了一些关于 QProcess 的内容,但似乎没有人确定它是否是跨平台解决方案。 任何帮助将不胜感激。
最佳答案
我在其他软件上也有类似的问题,这里是示例:
QString qstr_ext = ".ext_data";
LPCWSTR wstr_ext = (const wchar_t*)qstr_ext.utf16();
// Create and reset buffer
TCHAR buff[1024];
DWORD size = sizeof(buff);
memset(&buff, '\0', sizeof(buff));
// Read application path for extension
HRESULT err = AssocQueryString(ASSOCF_INIT_IGNOREUNKNOWN, ASSOCSTR_EXECUTABLE, wstr_ext, NULL, buff, &size);
if(S_OK == err)
{
// Convert to wstring
std::wstring wstring_data(&buff[0]);
// To QString
QString appPath = QString::fromStdWString(wstring_data);
qDebug() << appPath;
}
这样做是从注册表中获取“文件扩展名”(对于 Matlab file extensions ),然后使用 Windows API 读取安装了 matlab 的位置。
要在跨平台中使用它,会更复杂,因为在 Windows 上你可以读取注册表,例如在 OSX 上你可以使用'find'命令行找出位置(如果存在则命令将返回位置)
可以在 Linux 上使用类似的方法 - 使用“查找”命令。
所以 QProcess 是一种方法,但在 *nix 平台上速度很慢,因为没有安装或未安装应用程序的“注册表”(AFIK 没有注册表,例如您可以在 debian 中使用 apt-get 来查找是安装与否,但不是跨linux解决方案)
关于c++ - 如何在 C++ 中检查程序是否安装了 Qt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35766744/