使用环境: windosw,odb2.4.0,Qt5.7.0,mingw5.3.0,Oracle11g 下载包: 1.odb-2.4.0-i686-windows.zip 2.libodb-2.4.0.zip 3.libodb-qt-2.4.0.zip 4.libodb-mssql-2.4.0.zip 5.libodb-oracle-2.4.0.zip 6.libodb-mysql-2.4.0.zip
windows中使用mingw编译需使用类unix环境,odb-2.4.0-i686-windows中自带了msys,且集成了mingw4.9,但官网中说明需与应用程序使用相同的编译器对odb进行编译,不想对odb-2.4.0-i686-windows中的mingw环境进行修改,所以重新下载了msys1.0.11版,同时将qt5.7.0中的mingw目录加入系统的环境变量中,使msys可以找到gcc环境
odb
windows版的odb是编译好的,无需自己编译,将odb-2.4.0-i686-windows解压即可使用
libodb编译
该包编译没有什么问题,msys环境设置好后,进入相应目录,按照 ./configure make make install 运行即可,也可不运行make install,编译完成后到相应目录找到库文件即可
libodb-qt编译
编译qt包时需用到qt相关头文件,且qt5.7使用了c++11特性,需启用编译器c++11支持,所以要先使用export设置编译参数,执行configure时需使用–with-libodb参数指定libodb位置,执行顺序如下: export CXXFLAGS=”-I/d/Qt/Qt5.7.0/5.7/mingw53_32/include -std=c++11” ./configure –with-libodb=/d/tool/odb/libodb make
libodb-mssql编译
此包无特殊要求,按照标准顺序执行即可 ./configure –with-libodb=/d/tool/odb/libodb-2.4.0 make
libodb-oracle编译
编译oracle库时需指定oracle头文件目录和lib库文件目录,11g的库文件直接改名后不能使用,需先根据dll生成库文件: gendef oci.dll dlltool -D oci.dll -d oci.def -l liboci.a configure文件中使用的文件名为clntsh,所以需将liboci.a改名为libclntsh.a,然后按以下顺序执行 export CXXFLAGS=/d/Oracle/OCI/include export LDFLAGS=/d/Oracle/OCI/lib/msvc //libclntsh.a需放到/d/Oracle/OCI/lib/msvc目录中 ./configure –with-libodb=/d/tool/odb/libodb-2.4.0 make
libodb-mysql编译
需用到mysql sdk开发包,正常的安装的mysql默认是不带开发包的,如仅需要开发包而不要数据库,可下载mysqlconnetor获得 lib库需参照以上编译oracle时的方式进行处理,最后需改名为libmysqlclient_r.a 需注意的是,我使用的版本,lib库处理完成后,编译时仍报错:undefined reference mysql_thread_init@0,此函数在动态库中确实不存在,可通过将.def文件中定义的导出函数mysql_thread_init改名为mysql_thread_init@0,并重新生成.a lib文件的方式解决 mysql库编译完运行example中的hello例子时会报错,原因参见文章http://blog.csdn.net/zuishikonghuan/article/details/51918076 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|