Visual Studio 2010 在创建连接时为 Oracle OCCI 11g 提供报告"Access violation"
Visual studio 2010 reporting "Access violation" for Oracle OCCI 11g when creating connection
当我试图在Microsoft Visual Studio 2010上创建与Oracle OCCI 11g的连接时,我得到了以下错误:
OracleOCCI.exe中0x005a79c9处未处理的异常:0xC0000005:读取位置0x316c6561时发生访问冲突。
我的代码非常简单,如下所示:
class DMLDemo
{
private:
Environment *env;
Connection *conn;
Statement *stmt;
public:
DMLDemo (string user, string passwd, string db)
{
env = Environment::createEnvironment (Environment::DEFAULT);
if(env==nullptr)
cout << "Failure";
try
{
conn = env->createConnection (user, passwd, db);
}
catch (exception* e)
{
cout << "Error";
}
}
~DMLDemo ()
{
env->terminateConnection (conn);
Environment::terminateEnvironment (env);
}
};
int _tmain(int argc, _TCHAR* argv[])
{
//01. Test Simple Connection
try
{
DMLDemo demo("scott","Michael1","");
}
catch (exception* e)
{
cout << e->what();
}
getche();
return 0;
}
我在谷歌上搜索了一些答案,似乎oracle dll版本和VC版本之间的兼容性有问题。
有人能解决这个问题吗?还是改为VS 2005?
我一直在构建与Oracle 11g(11.2.0)32位数据库的VS08和VS10接口。我发现许多提供occi11x.dll的网站,包括我自己在V9目录中安装的Oracle,与VS08控制台应用程序不兼容。最后,我不得不让经过测试的"黄金"二进制文件从公司的另一个地方交付给我。一旦x86"gold"dll安装在控制台启动目录中,相同的代码就可以正常工作。
我正在VS10 occi11x.dll中搜索相同的适用性。到目前为止,我还没有找到它。在创建环境后,我遇到了类似的错误。有些dll允许我建立连接,但当我尝试执行ResultSet->next()时出错,其他dll甚至不允许我执行executeQuery()。我认为甲骨文没有妥善管理这件事是失职。
"已损坏"的VS08 dll有时与"黄金"dll具有正确的日期和文件大小。也许对dll进行内部搜索会发现哪些是可行的。
http://www.oracle.com/technetwork/database/occidownloads-083553.html是oracle用来提供各种occi dll以匹配Visual Studio的网站。也许他们的VS12版本实际上与Oracle12c数据库更兼容。
好的,我终于安装了VS2008,代码运行良好。2008年编译的Oracle DLL似乎在VS2010中不起作用。
也许有一天,Oracle可以发布其VS2010 DLL。。。
- Android NDK传感器向事件队列报告奇怪的间隔
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 使用std::source_location报告错误的最佳实践
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 当用户超过按钮点击限制时报告
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么cudaMemGetInfo报告设备内存总量的变化
- 为什么瓦尔格林德在不释放恶意内存后没有报告任何问题?
- 内存清理程序报告全局对象构造中未初始化值的使用
- QDataStream 读取和写入的字节数比 QFile::length() 报告要多
- 在 Linux 中使用 ioctl() 获取隐藏功能报告时,零字节消失
- Valgrind 在 std::string::swap 中报告 SIGILL
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 柯南,CMake.test()生成XML报告
- 如何构建一个异常类来报告C++中的哪些文件和行号?
- Valgrind 在 QThread::start() 上报告内存泄漏
- 我是否访问了已释放的内存,或者在这种情况下DrMemory报告不正确?
- 瓦尔格林德报告在 =带有嵌套shared_ptrs的运算符上的读取错误
- 为什么 valgrind 报告两个内存分配,而我的代码只请求一个?
- Visual Studio 2010 在创建连接时为 Oracle OCCI 11g 提供报告"Access violation"