• 6156阅读
  • 3回复

[提问]Qt5.5.1有编译成功OCI(oracle)驱动的吗? [复制链接]

上一主题 下一主题
离线pfeng
 

只看楼主 倒序阅读 楼主  发表于: 2016-05-18
以前用的Qt5.3.1,编译OCI很顺利,为了尝鲜,换到Qt5.5.1了,现在编译OCI驱动总是不成功,晕死。。。
  1. C:/Qt/Qt5.5.1/Tools/mingw492_32/bin/mingw32-make -f Makefile.Release all
  2. mingw32-make[1]: Entering directory 'C:/Qt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/build-oci-Desktop_Qt_5_5_1_MinGW_32bit-Release'
  3. C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\moc.exe -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D__GNUC__ -DWIN32 -IC:/Qt/Qt5.5.1/5.5/Src/qtbase/mkspecs/win32-g++ -IC:/Qt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/oci -IC:/Utils/icu32_54_1_mingw492/include -IC:/openssl/include -IC:/utils/postgresql/pgsql/include -ID:/oracle/product/10.2.0/db_1/OCI/include -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtCore/5.5.1 -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtCore/5.5.1/QtCore -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtSql/5.5.1 -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtSql/5.5.1/QtSql -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtSql -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtCore -I. ..\oci\main.cpp -o .moc\release\main.moc
  4. g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -fno-exceptions -frtti -Wall -Wextra -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I..\oci -I. -IC:/Utils/icu32_54_1_mingw492/include -IC:/openssl/include -IC:/utils/postgresql/pgsql/include -ID:\oracle\product\10.2.0\db_1\OCI\include -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore\5.5.1 -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore\5.5.1\QtCore -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql\5.5.1 -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql\5.5.1\QtSql -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore -I.moc\release -I..\..\..\..\mkspecs\win32-g++  -o .obj\release\main.o ..\oci\main.cpp
  5. g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -fno-exceptions -frtti -Wall -Wextra -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I..\oci -I. -IC:/Utils/icu32_54_1_mingw492/include -IC:/openssl/include -IC:/utils/postgresql/pgsql/include -ID:\oracle\product\10.2.0\db_1\OCI\include -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore\5.5.1 -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore\5.5.1\QtCore -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql\5.5.1 -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql\5.5.1\QtSql -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore -I.moc\release -I..\..\..\..\mkspecs\win32-g++  -o .obj\release\qsql_oci.o ..\..\..\sql\drivers\oci\qsql_oci.cpp
  6. C:\Qt\Qt5.5.1\5.5\mingw492_32\bin\moc.exe -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -D__GNUC__ -DWIN32 -IC:/Qt/Qt5.5.1/5.5/Src/qtbase/mkspecs/win32-g++ -IC:/Qt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/oci -IC:/Utils/icu32_54_1_mingw492/include -IC:/openssl/include -IC:/utils/postgresql/pgsql/include -ID:/oracle/product/10.2.0/db_1/OCI/include -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtCore/5.5.1 -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtCore/5.5.1/QtCore -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtSql/5.5.1 -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtSql/5.5.1/QtSql -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtSql -IC:/Qt/Qt5.5.1/5.5/mingw492_32/include/QtCore -I. ..\..\..\sql\drivers\oci\qsql_oci_p.h -o .moc\release\moc_qsql_oci_p.cpp
  7. g++ -c -pipe -fno-keep-inline-dllexport -O2 -std=c++0x -fno-exceptions -frtti -Wall -Wextra -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -I..\oci -I. -IC:/Utils/icu32_54_1_mingw492/include -IC:/openssl/include -IC:/utils/postgresql/pgsql/include -ID:\oracle\product\10.2.0\db_1\OCI\include -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore\5.5.1 -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore\5.5.1\QtCore -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql\5.5.1 -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql\5.5.1\QtSql -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtSql -IC:\Qt\Qt5.5.1\5.5\mingw492_32\include\QtCore -I.moc\release -I..\..\..\..\mkspecs\win32-g++  -o .obj\release\moc_qsql_oci_p.o .moc\release\moc_qsql_oci_p.cpp
  8. windres -i qsqloci_resource.rc -o .obj\release\qsqloci_resource_res.o --include-dir=. -DUNICODE -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB
  9. g++ -Wl,-s -shared -Wl,-subsystem,windows -Wl,--out-implib,\plugins\sqldrivers\libqsqloci.a -o \plugins\sqldrivers\qsqloci.dll .obj/release/main.o .obj/release/qsql_oci.o .obj/release/moc_qsql_oci_p.o  -LD:\oracle\product\10.2.0\db_1\OCI\lib\MSVC -loci -LC:/Qt/Qt5.5.1/5.5/mingw492_32/lib -lQt5Sql -lQt5Core .obj\release\qsqloci_resource_res.o
  10. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x104): undefined reference to `OCIAttrGet'
  11. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1f4): undefined reference to `OCIAttrSet'
  12. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x21e): undefined reference to `OCIAttrSet'
  13. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x2cb): undefined reference to `OCIErrorGet'
  14. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x3f0): undefined reference to `OCINumberFromInt'
  15. Makefile.Release:81: recipe for target '\plugins\sqldrivers\qsqloci.dll' failed
  16. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x480): undefined reference to `OCINumberFromInt'
  17. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xa64): undefined reference to `OCIDescriptorAlloc'
  18. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xaa7): undefined reference to `OCIAttrGet'
  19. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xae9): undefined reference to `OCIDescriptorFree'
  20. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xb61): undefined reference to `OCIDescriptorFree'
  21. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xc47): undefined reference to `OCIDescriptorAlloc'
  22. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xc76): undefined reference to `OCIDescriptorFree'
  23. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xcba): undefined reference to `OCIAttrSet'
  24. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xcf2): undefined reference to `OCIAttrSet'
  25. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xed9): undefined reference to `OCIHandleAlloc'
  26. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x13d7): undefined reference to `OCIDescriptorFree'
  27. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1539): undefined reference to `OCIAttrGet'
  28. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1568): undefined reference to `OCIAttrGet'
  29. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1597): undefined reference to `OCIAttrGet'
  30. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x15c6): undefined reference to `OCIAttrGet'
  31. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x15f5): undefined reference to `OCIAttrGet'
  32. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1624): more undefined references to `OCIAttrGet' follow
  33. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x18ef): undefined reference to `OCIHandleAlloc'
  34. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x197a): undefined reference to `OCIHandleFree'
  35. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1a03): undefined reference to `OCIHandleFree'
  36. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1b6b): undefined reference to `OCIEnvCreate'
  37. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1d84): undefined reference to `OCISessionEnd'
  38. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1d9e): undefined reference to `OCIServerDetach'
  39. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1db1): undefined reference to `OCIHandleFree'
  40. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1dcb): undefined reference to `OCIHandleFree'
  41. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1de5): undefined reference to `OCIHandleFree'
  42. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1e4d): undefined reference to `OCIHandleFree'
  43. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1e64): undefined reference to `OCIHandleFree'
  44. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x1fb5): undefined reference to `OCITransStart'
  45. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x20cd): undefined reference to `OCITransCommit'
  46. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x21dd): undefined reference to `OCITransRollback'
  47. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x352a): undefined reference to `OCIHandleAlloc'
  48. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x35d5): undefined reference to `OCIHandleFree'
  49. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x35f3): undefined reference to `OCIHandleFree'
  50. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x3672): undefined reference to `OCIServerAttach'
  51. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x36a5): undefined reference to `OCIHandleAlloc'
  52. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x36de): undefined reference to `OCIAttrSet'
  53. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x3710): undefined reference to `OCIHandleAlloc'
  54. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x375f): undefined reference to `OCIAttrSet'
  55. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x37a8): undefined reference to `OCIAttrSet'
  56. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x37db): undefined reference to `OCIHandleAlloc'
  57. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x3815): undefined reference to `OCIAttrSet'
  58. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x386a): undefined reference to `OCISessionBegin'
  59. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x38a4): undefined reference to `OCIAttrSet'
  60. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x38d6): undefined reference to `OCIServerVersion'
  61. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x45a3): undefined reference to `OCIBindByPos'
  62. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x46ad): undefined reference to `OCIBindByPos'
  63. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x47c2): undefined reference to `OCIBindByPos'
  64. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x4a91): undefined reference to `OCIBindByPos'
  65. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x4cfa): undefined reference to `OCIBindByPos'
  66. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x4f53): more undefined references to `OCIBindByPos' follow
  67. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x4f83): undefined reference to `OCIDescriptorFree'
  68. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x503e): undefined reference to `OCIDescriptorFree'
  69. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x517f): undefined reference to `OCIBindByPos'
  70. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x55c6): undefined reference to `OCINumberToInt'
  71. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x56ea): undefined reference to `OCINumberToInt'
  72. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x72b3): undefined reference to `OCILobCharSetForm'
  73. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x72df): undefined reference to `OCILobGetLength'
  74. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x73af): undefined reference to `OCILobRead'
  75. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x80c5): undefined reference to `OCINumberToInt'
  76. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x81e6): undefined reference to `OCIDescriptorAlloc'
  77. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x8421): undefined reference to `OCIStmtGetPieceInfo'
  78. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x84de): undefined reference to `OCIStmtSetPieceInfo'
  79. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x850f): undefined reference to `OCIStmtFetch'
  80. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x879d): undefined reference to `OCIErrorGet'
  81. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x89f3): undefined reference to `OCIStmtFetch'
  82. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x8a59): undefined reference to `OCIErrorGet'
  83. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x8d23): undefined reference to `OCIParamGet'
  84. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x8f96): undefined reference to `OCIDefineByPos'
  85. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9018): undefined reference to `OCIParamGet'
  86. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9102): undefined reference to `OCIDefineByPos'
  87. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x91a3): undefined reference to `OCIDefineByPos'
  88. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x91e6): undefined reference to `OCIAttrSet'
  89. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9219): undefined reference to `OCIAttrSet'
  90. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x95aa): undefined reference to `OCIDefineByPos'
  91. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x977b): undefined reference to `OCIAttrGet'
  92. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9905): undefined reference to `OCIStmtExecute'
  93. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9a99): undefined reference to `OCIAttrGet'
  94. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9d2b): undefined reference to `OCIBindByPos'
  95. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0x9d8f): undefined reference to `OCIBindArrayOfStruct'
  96. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xaa86): undefined reference to `OCIDescriptorFree'
  97. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xb0e5): undefined reference to `OCIStmtExecute'
  98. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xb601): undefined reference to `OCINumberToInt'
  99. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xb8a1): undefined reference to `OCINumberToInt'
  100. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xb9b7): undefined reference to `OCIHandleFree'
  101. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xba19): undefined reference to `OCIHandleAlloc'
  102. .obj/release/qsql_oci.o:qsql_oci.cpp:(.text+0xba6a): undefined reference to `OCIStmtPrepare'
  103. C:/Qt/Qt5.5.1/Tools/mingw492_32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: .obj/release/qsql_oci.o: bad reloc address 0xc in section `.text$_ZN17QSqlDriverPrivateD1Ev[__ZN17QSqlDriverPrivateD1Ev]'
  104. collect2.exe: error: ld returned 1 exit status
  105. mingw32-make[1]: Leaving directory 'C:/Qt/Qt5.5.1/5.5/Src/qtbase/src/plugins/sqldrivers/build-oci-Desktop_Qt_5_5_1_MinGW_32bit-Release'
  106. makefile:38: recipe for target 'release-all' failed
  107. mingw32-make[1]: *** [\plugins\sqldrivers\qsqloci.dll] Error 1
  108. mingw32-make: *** [release-all] Error 2
  109. 10:41:36: 进程"C:\Qt\Qt5.5.1\Tools\mingw492_32\bin\mingw32-make.exe"退出,退出代码 2 。
  110. Error while building/deploying project oci (kit: Desktop Qt 5.5.1 MinGW 32bit)
  111. When executing step "Make"
  112. 10:41:36: Elapsed time: 00:08.


离线XChinux

只看该作者 1楼 发表于: 2016-05-18
其实通过ODBC也可以连接Oracle,这样就不用编译QOCI了。看我下面这篇文章:

Qt使用Oracle ODBC Driver连接  
http://xchinux.blog.163.com/blog/static/2316926920135410450576
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线XChinux

只看该作者 2楼 发表于: 2016-05-18
里面关于设置环境变量那个,可以在代码中进行设置的,当然,要在你创建Qt Oracle ODBC连接之前,比如:

       QString strNLS_LANAG("SIMPLIFIED CHINESE_CHINA.AL32UTF8");
       QString strTNS_ADMIN("D:\\oracle_odbc");
        ::SetEnvironmentVariable(L"NLS_LANG",
                strNLS_LANG.toStdWString().c_str());
        ::SetEnvironmentVariable(L"TNS_ADMIN",
                strTNS_ADMIN.toStdWString().c_str());
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线375490321

只看该作者 3楼 发表于: 2017-06-11
楼主我出现的问题跟你一模一样的,求解当时怎么解决的呢?
快速回复
限100 字节
 
上一个 下一个