我正在尝试将C ++程序连接到Oracle数据库(12.1)。
此刻我的C ++程序是(我在Windows中使用mingw64 g ++编译器):
#include <occi.h>
void oracle_connect()
{
using namespace oracle::occi;
using namespace std;
Environment *env;
Connection *conn;
Statement *stmt;
env = Environment::createEnvironment (Environment::DEFAULT);
conn = env->createConnection ("dasdas", "dasdas", "dasdas");
}
int main()
{
oracle_connect();
}
我使用以下命令编译程序:
g++ test.cpp -loci -lociw32 -loraocci12
所有这些库(oraocci12.lib ociw32.lib oci.lib)都来自我的oracle文件夹: oracle \ product \ 12.1.0 \ client_1 \ oci \ lib \ msvc
但是在编译过程中出现错误:
undefined reference to `oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned int), void* (*)(void*, void*, unsigned int), void (*)(void*, void*))'
我应该如何正确链接程序以成功编译它?
答案 0 :(得分:1)
在我正在工作的项目中,配置如下
#----- Environnement specifique Oracle -----
ORACLEINC = $(ORACLE_HOME_DEV)/include
ORACLELIB = $(ORACLE_HOME_DEV)/lib32
ORACLEBIN = $(ORACLE_HOME_DEV)/bin
ORAINC = -I$(ORACLEINC) -I$(ORACLE_HOME_DEV)/rdbms/demo -I$(ORACLE_HOME_DEV)/precomp/public -I$(ORACLE_HOME_DEV)/plsql/public -I$(ORACLE_HOME_DEV)/network/public
ORALIB = -L$(ORACLELIB) -L$(ORACLE_HOME_DEV)/rdbms/lib -L$(ORACLE_HOME_DEV)/precomp/lib -L$(ORACLE_HOME_DEV)/plsql/lib -L$(ORACLE_HOME_DEV)/network/lib
其中ORACLE_HOME_DEV --> /exec/products/oracle/v10.2/
您要寻找的图书馆在这里
libocci.a.10.1 -> /exec/products/oracle/v10.2/lib32/libocci.a