使用Qt5.4.1开发的应用程序,在windows PC上debug可以连上sql server 数据库
将工程放到Ubuntu下qt creator编译产生可执行文件,再将该文件放入V3S开发板中执行出现
QSqlDatabase: QODBC driver not loaded
QSqlDatabase: available drivers:
请问如何在开发板添加QODBC driver
离线
参考https://blog.csdn.net/muzi_csd/article/details/23477393
产生了/usr/local/生成unixODBC-arm 目录
/usr/local/qt5.4.1/bin/qmake "INCLUDEPATH+=/usr/local/unixODBC-arm/include" "LIBS+=-L/usr/local/unixODBC-arm/lib -lodbc" odbc.pro
Cannot find file: odbc.pro.
离线
没有编译odbc插件,或者插件路径没设置正确
是没有装odbc插件,感谢
离线
参考https://blog.csdn.net/muzi_csd/article/details/23477393
产生了/usr/local/生成unixODBC-arm 目录
/usr/local/qt5.4.1/bin/qmake "INCLUDEPATH+=/usr/local/unixODBC-arm/include" "LIBS+=-L/usr/local/unixODBC-arm/lib -lodbc" odbc.pro
Cannot find file: odbc.pro.
odbc.pro是不是我应用程序的工程目录里面的.pro
离线
用buildroot勾选编译比较方便,自己编译会比较麻烦的。
是这个吗?
离线
哇酷小二 说:用buildroot勾选编译比较方便,自己编译会比较麻烦的。
https://whycan.com/files/members/6244/QQ图片20210708164527.png
是这个吗?
找到了target package-》library-》database-》unixodbc
离线
按照http://blog.sina.com.cn/s/blog_8d004f070102vgcr.html
重新折腾了好几天,测试freedtds中tsql可以连接到MS数据库,但交叉编译unixodbc后,在移植freetds时,.configure加上--with-unixodbc=/usr/local/unixodbc
报错
./configure: line 16574: /usr/local/arm/unixODBC/bin/odbc_config: cannot execute binary file: Exec format error
./configure: line 16575: /usr/local/arm/unixODBC/bin/odbc_config: cannot execute binary file: Exec format error
configure: error: /sql.h not found
意思是unixODBC中的bin文件是32位的,在Ubuntu下执行不了,不知其他人是怎么通过的,是不是Ubuntu安装支持32位的库就可以解决?
离线
sudo apt update
sudo apt install qemu-user-static
sudo update-binfmts --install i386 /usr/bin/qemu-i386-static --magic '\x7fELF\x01\x01\x01\x03\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\x03\x00\x01\x00\x00\x00' --mask '\xff\xff\xff\xff\xff\xff\xff\xfc\xff\xff\xff\xff\xff\xff\xff\xff\xf8\xff\xff\xff\xff\xff\xff\xff
sudo service binfmt-support start
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install gcc:i386
一系列操作之后,报错各种链接库缺失,收到将buildroot/target/lib中的libc.so.6,pthread.so.0,ld-linux-armhf.so.3拷贝到/lib下
./configure 配置完成
执行make&&make install,终于得到 libtdsodbc.so
离线
# ./isql -v QTDSN sa 123456
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL> select * from goods
+-----------------+---------------------+----------------------+------+---------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+-----------------+------------+-----------+----------------------+----------------------+
| GID | GName | GPrice | GUnit| GProvider1 | GProvider2 | GDescribe | STKQuantity | lotno | productDate| expireDate| outprice | outprice2 |
+-----------------+---------------------+----------------------+------+---------------------------------------------------+---------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-------------------------+-----------------+------------+-----------+----------------------+----------------------+
| 123444 | 我得我 | 3.00 | t | 收到
离线
以上显示使用isql可以访问到PC中的数据源QTDSN,ODBC数据源设置自行百度,目前qt 应用程序调用不对,还需要解决
离线
freeTDS也可以正确访问数据源,证明 freetds和unixodbc都是通的,现在只是qt调用不对,重新按新的路径拷贝plugins/sqlservers中的库文件进入试试
离线