2

我正在使用 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 输出窗口中加载程序的消息说“ldrpWalkImportDescriptor () 未能探测 [ORACLE CLIENT DIR]\oci\lib\msvc\vc8\oraocci11d.dll 的清单,ntstatus 0xc0150002" 我没有看到 oraocci11d.dll 的清单文件,所以我很茫然如何解决这个问题。任何更精通 OCCI 的 VS 设置的人可以提出建议吗?提前致谢...

谢尔顿

4

1 回答 1

6

我注意到这里的一些 OCCI 问题没有得到解答,所以我觉得有义务解释我是如何解决我的问题的 :) 正如 OCCI 线程中经常提到的那样,关键是下载适当版本的 Oracle Instant Client。我曾尝试使用已安装的运行时客户端中的文件,但该客户端的版本号为 11.2.0.1,而 VS2010 的 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 的此博客文章。尽管这篇文章是为 Visual Studio 2008 编写的,但 2010 的过程仍然相同,只是版本不同#s...

谢尔顿

于 2012-08-03T18:15:55.910 回答