• 11476阅读
  • 11回复

[提问]QT5.1.1 msvc2010_opengl  编译 Oracle驱动 [复制链接]

上一主题 下一主题
离线davie
 

只看楼主 正序阅读 楼主  发表于: 2014-12-26
您好,我用的是QT5.1.1 msvc2010_opengl 版本,安装路径为D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl,
环境变量PATH设置加上:D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\bin;
增加一环境变量QTDIR:D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl和
QTMAKESPEC:D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\mkspecs
我用的是win7 VS2010,
按如下操作
编译
(1)VS中:
第一步:打开Qt Command Prompt,输入命令;
第二步:set INCLUDE=%include%;~~~\db_1\OCI\include
第三步:set LIB=%lib%;~~~\db_1\OCI\lib\MSVC
第四步:cd %QTDIR%\src\plugins\sqldrivers\oci
第五步:qmake -o Makefile oci.pro
第六步:nmake
第七步:将%QTDIR%\src\plugins\sqldrivers\oci\Debug目录中的qsqlocid4.dll和qsqloci4.lib复制到%QTDIR%\plugins\sqldrivers目录中



执行到第六步,出现了如下错误,请大牛们帮忙看一下
Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

        cl -c -nologo -Zm200 -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -DUNICO
DE -DWIN32 -DQT_NO_CAST_TO_ASCII -DQT_NO_CAST_FROM_ASCII -DQT_NO_EXCEPTIONS -DQT
_NO_DEBUG -DQT_PLUGIN -DQT_SQL_LIB -DQT_CORE_LIB -DNDEBUG -I"D:\Qt\Qt5.1.1\5.1.1
\msvc2010_opengl\include" -I"D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtSql"
-I"D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtSql\5.1.1" -I"D:\Qt\Qt5.1.1\5.1
.1\msvc2010_opengl\include\QtSql\5.1.1\QtSql" -I"D:\Qt\Qt5.1.1\5.1.1\msvc2010_op
engl\include\QtCore" -I"D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore\5.1.1
" -I"D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore\5.1.1\QtCore" -I".moc\re
lease_shared" -I"..\..\..\..\mkspecs\win32-msvc2010" -Fo.obj\release_shared\ @C:
\Users\ThinkPad\AppData\Local\Temp\nma07868.
Command line warning D4002 : ignoring unknown option '-Zc'
Command line warning D4002 : ignoring unknown option '-Z:'
Command line warning D4002 : ignoring unknown option '-Zw'
Command line warning D4002 : ignoring unknown option '-Zc'
Command line warning D4002 : ignoring unknown option '-Zh'
Command line warning D4002 : ignoring unknown option '-Zr'
Command line warning D4002 : ignoring unknown option '-Z_'
Command line warning D4002 : ignoring unknown option '-Zt'
Command line warning D4002 : ignoring unknown option '-w34100'
Command line warning D4002 : ignoring unknown option '-w34189'
main.cpp
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(81) : error
C2146: syntax error : missing ';' before identifier 'iterator_category'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(81) : error
C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(81) : error
C2501: 'iterator_category' : missing storage-class or type specifiers
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(82) : error
C2146: syntax error : missing ';' before identifier 'value_type'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(82) : error
C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(82) : error
C2501: 'value_type' : missing storage-class or type specifiers
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(83) : error
C2146: syntax error : missing ';' before identifier 'distance_type'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(83) : error
C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(83) : error
C2501: 'distance_type' : missing storage-class or type specifiers
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(84)
: see reference to class template instantiation 'std::iterator_traits<_It>' bein
g compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(226) : error
C2974: 'iterator' : invalid template argument for '_D', type expected
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(71)
: see declaration of 'iterator'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(279)
: see reference to class template instantiation 'std::istreambuf_iterator<_E,_T
r>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(231) : error
C2146: syntax error : missing ';' before identifier 'int_type'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(279)
: see reference to class template instantiation 'std::istreambuf_iterator<_E,_T
r>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(231) : error
C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(279)
: see reference to class template instantiation 'std::istreambuf_iterator<_E,_T
r>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(231) : error
C2501: 'int_type' : missing storage-class or type specifiers
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\utility(279)
: see reference to class template instantiation 'std::istreambuf_iterator<_E,_T
r>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(77) : error
C2146: syntax error : missing ';' before identifier 'value_type'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(92)
: see reference to class template instantiation 'std::back_insert_iterator<_C>'
being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(77) : error
C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(92)
: see reference to class template instantiation 'std::back_insert_iterator<_C>'
being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(77) : error
C2868: 'value_type' : illegal syntax for using-declaration; expected qualified-
name
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(92)
: see reference to class template instantiation 'std::back_insert_iterator<_C>'
being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(81) : error
C2182: '<Unknown>' : illegal use of type 'void'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(92)
: see reference to class template instantiation 'std::back_insert_iterator<_C>'
being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(102) : erro
r C2146: syntax error : missing ';' before identifier 'value_type'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(117
) : see reference to class template instantiation 'std::front_insert_iterator<_C
>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(102) : erro
r C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(117
) : see reference to class template instantiation 'std::front_insert_iterator<_C
>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(102) : erro
r C2868: 'value_type' : illegal syntax for using-declaration; expected qualified
-name
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(117
) : see reference to class template instantiation 'std::front_insert_iterator<_C
>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(106) : erro
r C2182: '<Unknown>' : illegal use of type 'void'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(117
) : see reference to class template instantiation 'std::front_insert_iterator<_C
>' being compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(127) : erro
r C2146: syntax error : missing ';' before identifier 'value_type'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(127) : erro
r C2838: illegal qualified name in member declaration
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(127) : erro
r C2868: 'value_type' : illegal syntax for using-declaration; expected qualified
-name
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(128) : erro
r C2629: unexpected 'class std::insert_iterator<_C> ('
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(128) : erro
r C2334: unexpected token(s) preceding ':'; skipping apparent function body
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(131) : erro
r C2182: '<Unknown>' : illegal use of type 'void'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(143) : erro
r C2146: syntax error : missing ';' before identifier 'iter'
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(143) : erro
r C2501: 'iter' : missing storage-class or type specifiers
        D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator(144
) : see reference to class template instantiation 'std::insert_iterator<_C>' bei
ng compiled
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(395) : error C2989:
'AlignOf<class ?? ::T &>' : template class has already been defined as a non-te
mplate class
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(395) : error C2906:
C++ language change: to explicitly specialize class template 'AlignOf' use the
following syntax -
        template<> struct AlignOf<class ?? ::`template-parameter-257' &> ...
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(395) : error C2988:
unrecognizable template declaration/definition
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(396) : error C2989:
'AlignOf<class ?? ::`template-parameter-258' [0]>' : template class has already
been defined as a non-template class
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(396) : error C2906:
C++ language change: to explicitly specialize class template 'AlignOf' use the
following syntax -
        template<> struct AlignOf<class ?? ::`template-parameter-258' [0]> ...
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(396) : error C2988:
unrecognizable template declaration/definition
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(839) : error C2146:
syntax error : missing ';' before identifier 'i'
        D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(841) : see
reference to class template instantiation 'QForeachContainer<T>' being compiled
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(839) : error C2501:
'i' : missing storage-class or type specifiers
        D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(841) : see
reference to class template instantiation 'QForeachContainer<T>' being compiled
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(839) : error C2501:
'e' : missing storage-class or type specifiers
        D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(841) : see
reference to class template instantiation 'QForeachContainer<T>' being compiled
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(886) : error C2146:
syntax error : missing ';' before identifier 'qGetPtrHelper'
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(886) : error C2433:
'pointer' : 'inline' not permitted on data declarations
D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore/qglobal.h(886) : fatal error
C1903: unable to recover from previous error(s); stopping compilation
NMAKE : fatal error U1077: 'cl' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"D:\Program Files (x86)\Microsoft Visual Studio\VC98
\bin\NMAKE.EXE"' : return code '0x2'
Stop.
离线davie

只看该作者 11楼 发表于: 2014-12-29
回 退避九舍 的帖子
退避九舍:第一步:打开Qt Command Prompt,输入命令
set include=
set lib=
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
第二步:set INCLUDE=%include%;~~~\db_1\OCI\include
....... (2014-12-26 22:34) 

谢谢,已经按你说的编译完成了。
刚进行了下测试能连接Oracle库了,至少能用了。
但生成的目录在在哪设置的呀?

只看该作者 10楼 发表于: 2014-12-27
哪位大牛指点下,windows下编译数据库驱动时,具体需要哪些条件
include
lib
bin
离线退避九舍

只看该作者 9楼 发表于: 2014-12-26
第一步:打开Qt Command Prompt,输入命令
set include=
set lib=
call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
第二步:set INCLUDE=%include%;~~~\db_1\OCI\include
第三步:set LIB=%lib%;~~~\db_1\OCI\lib\MSVC
第四步:cd %QTDIR%\src\plugins\sqldrivers\oci
第五步:qmake -o Makefile oci.pro
第六步:nmake

在第二步前执行 红色字体 的命令。。。
1条评分金钱+10
davie 金钱 +10 已经编译通过,谢谢 2014-12-29
离线davie

只看该作者 8楼 发表于: 2014-12-26
回 davie 的帖子
davie:感谢你的回复,我对编译不太懂,但编译过程中有“mkspecs\win32-msvc2010”,我觉得用的是VS2010,但像你说的,它确实调用了VC6的东西,至于为什么,我也不太懂 (2014-12-26 13:20) 

VC6.0 和VS2010我都安装了,但我看他编译确实调用了mkspecs\win32-msvc2010,如下面所示,难道我不能安装VC6?或者他默认启动vc6来编译?

"D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore\5.1.1
" -I"D:\Qt\Qt5.1.1\5.1.1\msvc2010_opengl\include\QtCore\5.1.1\QtCore" -I".moc\re
lease_shared" -I"..\..\..\..\mkspecs\win32-msvc2010"
离线dbzhang800

只看该作者 7楼 发表于: 2014-12-26
回 davie 的帖子
davie:感谢你的回复,我对编译不太懂,但编译过程中有“mkspecs\win32-msvc2010”,我觉得用的是VS2010,但像你说的,它确实调用了VC6的东西,至于为什么,我也不太懂 (2014-12-26 13:20) 

你电脑上 之前装的 VS2010 还是VC6 ,你不清楚么?

你下载的Qt是VS2010编译的。但是,你不能指望一个开源的库,给你自动带一个昂贵的商业版VS2010
离线davie

只看该作者 6楼 发表于: 2014-12-26
回 退避九舍 的帖子
退避九舍:Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.
你看编译器的版本吧,1988-1998,6.00.8168.0,你确定这不是VC6 (2014-12-26 11:02) 

感谢你的回复,我对编译不太懂,但编译过程中有“mkspecs\win32-msvc2010”,我觉得用的是VS2010,但像你说的,它确实调用了VC6的东西,至于为什么,我也不太懂
离线dbzhang800

只看该作者 5楼 发表于: 2014-12-26
回 davie 的帖子
davie:"我用的是win7 VS2010"
我已经说了,我没有用VC6 (2014-12-26 10:56) 

你给贴出的信息中,从头到尾,都显示你在用VC6
离线退避九舍

只看该作者 4楼 发表于: 2014-12-26
回 davie 的帖子
davie:"我用的是win7 VS2010"
我已经说了,我没有用VC6 (2014-12-26 10:56) 

Microsoft (R) Program Maintenance Utility   Version 6.00.8168.0
Copyright (C) Microsoft Corp 1988-1998. All rights reserved.

你看编译器的版本吧,1988-1998,6.00.8168.0,你确定这不是VC6
1条评分金钱+1
davie 金钱 +1 - 2014-12-26
离线退避九舍

只看该作者 3楼 发表于: 2014-12-26

D:\Program Files (x86)\Microsoft Visual Studio\VC98\include\iterator 这显然是VC6的头文件路径。。。


离线davie

只看该作者 2楼 发表于: 2014-12-26
回 退避九舍 的帖子
退避九舍:你应该使用vs2010编译,而不是VC6 (2014-12-26 10:12) 

"我用的是win7 VS2010"
我已经说了,我没有用VC6
离线退避九舍

只看该作者 1楼 发表于: 2014-12-26
你应该使用vs2010编译,而不是VC6
快速回复
限100 字节
 
上一个 下一个