qt可编译运行但不能独立运行linux

qt可编译运行但不能独立运行linux,第1张

出问题的exe名称为TestApp.exe,在Visual Studio下编译运行都正常,但无法直接点击exe运行。报错为(应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序)

本人环境:基于visual studio IDE下的QT编译器,共有四种,在 qt-版本号 文件夹下。

我的问题解决步骤如下:

1.看准自己项目的编译环境

 我电脑虽然是64位的,但是编译器环境是32位的,故之后所有都需要以32位为标准

由于是Visual Studio ,所以采用下面文件夹中的msvc2017环境进行编译(没有标注64位就是32位)

2.添加系统环境变量

打开控制面板搜索环境变量,对系统path进行更改

按照上一步的环境进行配置!!!不要添加冗余路径,一项即可!!

 PS:多项也可以,但是要在IDE中选择正确的default编译器,不然系统会搞混64和32位的dll

 3.进入qt自带的命令行中

开始框中搜索 → 选择合适的环境(比如我是MSVC 2017 32-bit)→ 进入目标exe程序所在文件夹

 输入命令

windeployqt xxx(目标exe名称)

复制

PS:该命令(windeployqt)若添加了系统Path后,也可以直接在系统cmd中运行,前提是:环境Path只有适合自己项目的那一项!!(only 32 or 64)  否则系统会弄混。。。然后就又失败链接了qaq

此时,在exe的文件夹下面会多出很多文件夹和dll文件,表明已经link成功

再次强调:不同位数的编译器链接出来的dll不同!一定一定要适合自己的程序

方法一:修改LD_LIBRARY_PATH环境变量。

这种方法主要处理临时的动态库加载,LD_LIBRARY_PATH环境变量修改后,只能是对当前的用户生效。LD_LIBRARY_PATH的作用:这个环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。

编译器:GCC编译器可以用来编译C和C++源程序,C编译器通过文件的后缀来判断是C程序还是C++程序。一般来说C源文件的后缀为“.C”,而C++源文件的后缀为“.C”或“C++”。

但GCC编译器只能编译C++源程序,不能与使用的库连接,因此用G++来完成C++程序的编译与连接,该程序会自动调用GCC来编译。

Linux里环境变量的设置,有如下几种方法:

(1)直接在终端里输入export 后面加要设的变量,例如QT:

Export QTDIR=$PWD/qt-2.3.2

其中,pwd是用来显当前路径的命令,在其前面加上$,则表示QT的目标目录在当前目录下的“qt-2.3.2”里,当然“$PWD”也可以用绝对路径来代替。这种方法所设的环境变量在下次开机后不再有效,而且换个shell也不会有效,只是临时的。

(2)在etc/profile里添加环境变量,比如:

export QTDIR=/usr

   export LD_LIBRARY_PATH=$QTDIR/lib

   export QT_QWS_FONTDIR=$QTDIR/lib/fonts

   export QWS_DISPLAY="LinuxFb:/dev/fb0"

(3)修改.bashrc, 如果需要给某个用户权限使用这些环境变量,只需修改其个人用户家目录下的.bashrc文件就可以了。

(4)用以上面两种方法设置好环境变量后记得重启

以上使用QT为例


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8938417.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-23
下一篇2023-04-23

发表评论

登录后才能评论

评论列表(0条)

    保存