String/Vector 釋放崩潰。Statement::setXXX() 無效,ResultSet::getString() 首行正常、第二行起亂碼。VC6 默認鏈接配置與 OCCI 編譯期依賴的 CRT 版本、庫順序不匹配。OCCI 需特定宏 WIN32COMMON 激活正確模板實例化。
oci.lib、oraocci9.lib 在 Library Path;oci/include 在 Include Path。WIN32COMMON
kernel32.lib user32.lib oci.lib msvcrt.lib msvcprt.lib oraocci9.lib
libc.lib
:occimakeobj
ott userid=scott/tiger intype=%1.typ outtype=%1out.type code=cpp hfile=%1h.h cppfile=%1o.cpp mapfile=%1m.cpp attraccess=private
cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp %1m.cpp %1o.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc
goto end
:occimake
cl -GX -DWIN32COMMON -I. -I%ORACLE_HOME%\oci\include -I. -D_DLL -D_MT %1.cpp /link /LIBPATH:%ORACLE_HOME%\oci\lib\msvc oci.lib msvcrt.lib msvcprt.lib oraocci9.lib /nod:libc
goto end
/nod:libc 等同於忽略 libc.lib。msvcrt.lib msvcprt.lib 必須在 oci.lib 之後、oraocci9.lib 之前,符合 OCCI 內部 CRT 依賴順序。新版編譯器 CRT 統一,OCCI 適配更好,通常僅需正常引用 oraocci10.lib/oraocci11.lib 即可 Debug,無需忽略默認庫。