Windows快捷方式具有在将文件移动到其他驱动器时不参考的绝对路径。我希望用户点击一个与子目录中的所有Qt dll文件分开的文件,而不是一个快捷方式。从批处理文件运行便携式Qt应用程序可执行文件
我已经创建了一个位于可执行文件上方1个目录的批处理文件,并有一个相对路径来运行该文件。
release
+ db
+ plugins
+ platforms
+ iconengines
+ imageformats
- Qt5Core.dll
- program.exe
- etc....
program.bat
//paths set in main()
QCoreApplication::AddLibraryPath("plugins");
我发现下面的代码是从this question:
@start "" "\release\program.exe"
但在运行时,错误消息 “Windows无法找到。” 显示
我也试过
@start "" "release\program.exe"
@start "" "%CD%\release\program.exe"
@start "" "%~dp0\release\program.exe"
但我得到一个关于Qt没有找到“windows”平台插件的错误,这似乎表明路径有问题。
为什么程序可以正确运行一个Windows快捷方式,并且批处理文件失败?
请问你的程序运行时不会从QtCreator运行? – fbucek
你有路径在哪里你的程序这个文件:release/platforms/qwindows.dll? – fbucek
我在问,因为快捷方式可能会使用您的环境设置,Qt的路径在哪里,所以它会查找所有需要的dll,批处理文件是否可以具有“干净环境”,这就是为什么您的程序会抱怨缺少插件。尝试在干净的环境中运行程序,meybe它也将无法运行,问题在别的地方。 – fbucek