环境:

windows10、qt5.14.2、dm8

前言

之前已经编译成功过一便了的时候当时c++的编译器使用的是gcc,但是gcc调试时QString等qt的类型始终不方便查看到值,于是想改成msvc编译器,但是之前编译后的驱动加载不上了,然后我利用Windeployqt打包exe是,发现qt的mingw对应的库都没有带d的版本,因此我认为不同编译器编译出来的qt库不能混用。

这里将我的编译成果放在文章上

https://download.csdn.net/download/qq_34572502/91868129?spm=1001.2014.3001.5503

猜测

于是我在想是不是因为当时第一遍编译时系统环境变量把mingw相关库的路径放在前面,导致qmake make等命令使用的依赖的qt库都为mingw的相关库。

开干

注:首先要安装达梦数据库,并配置相关的达梦数据库的路径。

安装qt时勾选源码,保证qt路径下src源码

于是我将系统环境变量进行了调整,将qtmsvc相关的配置放到前面。

将下载的相关源码文件

拷贝到qt目录下${QT_PATH}\${Version}\Src\qtbase\src\plugins\sqldrivers\dm

备份dm.pro

修改dm.pro

利用powershell在dm中打开

执行命令 qmake "DEFINES+=DM64" "CONFIG+=debug_and_release"

这个是64位命令,如果使用32位可以查看readme.txt

构建完成后按照教程是通过vs的命令工具利用nmake命令来编译Debug或者Release版本,但是我的一直报错找不到无法解析外部符号qt相关的类 ,

无奈之下通过QtCreator打开dm.pro项目构建后build就能成功生产,后续查后发现QtCreator用的是jom.exe来代替nmake。

编译完成后拷贝到${QT_PATH}\${Version}\5.14.2\msvc2017_64\plugins\sqldrivers中供打包使用。

有可能打包后达梦数据库还是不能连接,此时就需要利用Dependencies或者AllDllDeps64工具查找是否缺少某些依赖dll,进行查漏补缺。

  1. MSVC2017连接达梦数据库

操作和上边一样 编译的时候可能会遇到error: msvc-version.conf loaded but QMAKE_MSC_VER isn't set错误

解决办法1 在下面的文件里面添加

# 指定使用 MSVC 2017 编译器版本

QMAKE_MSC_VER = 1899

具体的版本要通过在vs命令行工具内使用cl /?查看版本信息

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐