OCCI 19.3.0:createConnection与OCCIUTF16一起崩溃

时间:2019-07-11 11:33:35

标签: c++ oracle visual-studio occi

我们想从occi 18升级到occi 19.3.0.0.0,因为我们希望独立于旧的MS库(MSVCR120.DLL)。

但是连接数据库时出现以下错误:

"Program: C:\Windows\SYSTEM32\MSVCP140D.dll

File: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xstring

Line: 1695 Expression: string subscript out of range



For information ..."

在createEnvironment中删除“ OCCIUTF16”,“ OCCIUTF16”后,连接成功。

我们还认识到,使用occi 19不能在此简单程序中加载oci.dll。使用occi 18可以加载oci.dll。

#include "occi.h"

#include <iostream>
using namespace oracle::occi;
using namespace std;

int main(int argc, wchar_t * argv[])
{
    try {
        // OK
        //auto env = Environment::createEnvironment(Environment::Mode(Environment::OBJECT | Environment::THREADED_MUTEXED));
        //auto conn = env->createConnection("SCOTT", "tiger", "ORATEST");

        // ERROR
        auto env = Environment::createEnvironment("OCCIUTF16", "OCCIUTF16",    Environment::Mode(Environment::OBJECT | Environment::THREADED_MUTEXED));
        UString user((utext*)L"SCOTT");
        UString pwd((utext*)L"tiger");
        UString host((utext*)L"ORATEST");
        auto conn = env->createConnection(user, pwd, host);
    }
    catch (SQLException & ex) {
        cout << ex.what();
    }
    return 0;
}

环境: ORACLE服务器12.1.0.2 Microsoft Visual C ++ 2017编译器版本15.9.13

基本灯光包装信息

2019年5月29日星期三22:35:38

64位客户端共享库-19.3.0.0.0

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

  • 失败时能否提供完整的堆栈
  • 您所指向的问题是MSVCP140D.dll(D-调试)->因此,我假设您正在使用ORAOCCIxxD.LIB(Debug版本)进行编译。如果您使用的是调试版本,请使用调试版本中的所有组件。
  • 是的,现在不会将OCI.DLL与ORAOCCI.DLL一起加载。

谢谢, -P。 Venkatraman。