OCCI C ++应用程序的Visual Studio调试运行时错误

时间:2012-07-27 22:00:20

标签: c++ runtime-error visual-studio-debugging oracle11gr2 occi

我正在使用Visual Studio开发一个使用OCCI查询Oracle 11g数据库的C ++程序。这是一个非常简单的程序,只进行一次查询,但我一直遇到运行时错误。我首先尝试在VS2010中开发这个,下载11.2.0.3 OCCI文件,并且我收到了与oci.dll中没有的heap-alloc过程的入口点相关的错误。我得到的印象是这个错误可能是因为我的Oracle客户端是11.2.0.1。

由于我无法支持将客户端升级到更高版本,因此我决定回退使用Visual Studio 2005,因为我在Oracle的OCCI文档中读到已经安装了vc8版本的OCCI库和DLL在11g客户端。所以我将我的C ++ / OCCI程序移到了VS 2005,现在我得到了一个不同的调试运行时错误:一个错误消息框说“应用程序无法正确初始化”,并且来自VS Output窗口中的加载器的消息说“ldrpWalkImportDescriptor” ()无法探测[ORACLE CLIENT DIR] \ oci \ lib \ msvc \ vc8 \ oraocci11d.dll的清单,ntstatus 0xc0150002“我没有看到oraocci11d.dll的清单文件,所以我很茫然如何解决这个问题。任何更精通OCCI的VS设置的人都可以提出建议吗?提前谢谢......

谢尔顿

1 个答案:

答案 0 :(得分:6)

我注意到这里的一些OCCI问题没有得到解答,所以我觉得有义务解释我是如何解决我的问题的:)正如在OCCI线程中经常提到的,关键是要下载适当版本的Oracle Instant客户。我曾尝试使用我已安装的运行时客户端中的文件,但该客户端的版本号为11.2.0.1,而VSCI10的OCCI需要11.2.0.2或11.2.0.3版本。所以我最终为OCCI和Instant Client下载了版本11.2.0.2,因为版本号必须匹配以便工作......

之后,只需设置PATH环境变量并将Visual Studio项目配置为指向包含OCCI DLL,库和包含文件的目录,并将TNS_ADMIN环境变量设置为指向包含TNSNAMES.ORA文件的目录,该文件定义了我要连接的数据库。有关此设置的逐步说明,请参阅Mark Williams的blog post。尽管这篇文章是为Visual Studio 2008编写的,但2010年的程序仍然相同,只是使用不同版本的#s ...

谢尔顿