【问题标题】:Cannot open include file: 'occi.h': No such file or directory无法打开包含文件:'occi.h':没有这样的文件或目录
【发布时间】:2015-11-11 07:52:34
【问题描述】:

我正在尝试编译现有的 C++ 项目,但出现此错误:

 fatal error C1083: Cannot open include file: 'occi.h': No such file or directory

我所做的是我去了这个链接:

http://www.oracle.com/technetwork/topics/winsoft-085727.html

并下载了第一个(基本)包。

然后解压缩文件夹并修改 PATH 变量,如下所示:

C:\Program Files\Atmel\sam-ba_2.12\drv\;C:\Program Files\Atmel\sam-ba_2.12;C:\Program Files\ATMEL Corporation\AT91-ISP v1.4\Library;C:\MSYS\1.0\bin;C:\MSYS\1.0\local\bin;C:\cygnus\cygwin-b20\H-i586-cygwin32\bin;D:\instantclient_12_1

最后是oracle的路径。 但我仍然收到错误,有人可以帮忙吗?

PS 我注意到在我的项目中有这样的行:

#include "occi.h"

也许是因为这个?

【问题讨论】:

  • 您需要使用-I 选项指定编译器可以在哪里找到该包含文件。设置PATH 变量只会影响您的系统在哪里可以找到可执行文件或共享库。
  • 为什么要投反对票?我问了明确的问题,并提到了我尝试过的内容

标签: c++ oracle


【解决方案1】:

基本包是不够的。其描述为“运行 OCI、OCCI 和 JDBC-OCI 应用程序所需的所有文件”(强调);你可以运行一个OCI程序,但你不能编译一个。您需要下载其他即时客户端组件。特别是对于 occi.h 标头,您需要列出的第五个文件:

*Instant Client 包 - SDK:附加头文件和使用 Instant Client 开发 Oracle 应用程序的示例 makefile

如果您在解压基本包的同一位置下载并解压该文件,您的即时客户端目录将获得一个 sdk 文件夹,其中包含所有 OCI 头文件。

然后您需要使用-I D:\instantclient_12_1\sdk\include 进行编译,以便您的编译器知道在哪里查找occi.h 和其他头文件。您可能还需要-L 告诉它在哪里可以找到 Oracle 库;大概您已经拥有-lclntsh 和/或-locci,它们指的是您应该已经从基本包中获得的库。

【讨论】:

  • @user200399 - 我不使用那个,但是this question might show you what you need to do
  • Project->Properties->Configuration Properties->C/C++->Additional Include Directories 并添加您的 Instantclient/include 文件夹的路径。
  • 正如@Alex Poole 所说,您还需要告诉链接器在哪里可以找到 Oracle 库,您可以使用:Project->Properties->Configuration Properties->Linker->General->Additional Library Directories 并添加路径到您的 sdk/lib/msvc。
猜你喜欢
  • 2017-07-04
  • 2013-11-05
  • 2014-05-07
  • 2017-02-22
  • 2013-11-01
  • 2017-03-31
  • 1970-01-01
相关资源
最近更新 更多