我正在尝试使用头文件occi.h编译一个cpp代码我正在使用的代码是 `
#include <iostream>
#include <occi.h>
using namespace std;
int main(){
oracle::occi::Environment* environment;
oracle::occi::Connection *con;
oracle::occi::Statement* stmt;
oracle::occi::ResultSet* res;
try
{
environment = oracle::occi::Environment::createEnvironment(oracle::occi::Environment::DEFAULT);
con = environment->createConnection("sys", "root","xe");
stmt = con->createStatement("select * from customers");
res = stmt->executeQuery();
while (res->next())
std::cout<<res->getInt(1)<<" "<<res->getString(2)<<std::endl;
stmt->closeResultSet(res);
con->terminateStatement(stmt);
environment->terminateConnection(con);
}catch(oracle::occi::SQLException &e){
std::cout<<e.what();
}
return 0;
}`
运行以下命令时出现以下错误: - g ++ -I / root / instantclient_11_2 / sdk / include -L $ ORACLE_HOME / lib:/ root / Shared / instantclient_11_2_lib / -L $ ORACLE_HOME / rdbms / lib cpp_db_conn.cpp
错误: -
/tmp/ccjcKsxz.o:在函数main':
udf.cpp:(.text+0x26): undefined reference to
oracle :: occi :: Environment :: createEnvironment(oracle :: occi :: Environment :: Mode,void *,void *()(void ,unsigned long),void *()(void ,void *,unsigned long),void()(void ,void *))&#39;
/tmp/ccjcKsxz.o:(.gcc_except_table+0x80):对于oracle :: occi :: SQLException的#typeinfo的未定义引用&#39;
collect2:ld返回1退出状态
答案 0 :(得分:0)
oracle :: occi :: Connection |为什么这里有空格??? | * |而不是这里??? | con;
答案 1 :(得分:0)
我可以告诉你我的情况。 显然,这是一个有点不匹配的问题。
我的环境是'Microsoft SDK v7.0',默认为64位编译器
不幸的是,我的oracle客户端是32位,其版本是instantclient-basic-nt-12.1.0.2.0。
我和你的错误一样。
因此,我将编译器更改为32位。
setenv /x86
然后,所有问题都消失了。
祝你有个美好的一天。