QT项目开发过程中运行路径问题
凭空怕不好说清楚,拿个例子说吧。
一个名为test的项目,源码存放D:/QtApps/test。
默认条件下,release编译结果存放在D:/QtApps/build-test-Desktop_Qt_5_12_9_MinGW_32_bit-Release下面,这个文件夹下面还有两个文件夹debug和release,编译生成的可执行文件test.exe就存放在release下面。
test.exe运行过程中需要调用一些其它文件,比如配置文件test.ini,还有一些第三方的动态库。
项目开发调试的过程中,这些第三方文件应该复制到哪里呢?
实际工作中发现,简单读写的test.ini需要复制到D:/QtApps/build-test-Desktop_Qt_5_12_9_MinGW_32_bit-Release下面。动态库就要看情况了。
有时可能需要复制到两个地方。D:/QtApps/build-test-Desktop_Qt_5_12_9_MinGW_32_bit-Release里复制一份,test.exe所在的release下面也要复制一份
测试时使用的动态库是一组文件,其中一个是入口,其它几个被这个入口间接调用。如果不在D:/QtApps/build-test-Desktop_Qt_5_12_9_MinGW_32_bit-Release里复制,程序启动时会找不到动态库,不在release里面复制,程序运行调用到动态库时会出现异常崩溃。所以这种情况就要在两个地方各复制一份。
程序发布时没这么麻烦,把这些第三方文件通通复制到test.exe同级路径下即可。