最近我将我的 gcc 从 4.1.2 升级到了 5.2.0。
这导致了与 OCCI 库的链接错误:
我正在尝试运行的源代码:
#include <iostream>
#include <occi.h>
using namespace oracle::occi;
using namespace std;
int main (int argc, char *argv[])
{
Environment *env;
Connection *conn;
oracle::occi::MetaData metaData = conn->getMetaData ((char *)"PERSON_OBJ");
metaData.getString(MetaData::ATTR_NAME);
return(0);
}
联动错误:
gmake -f /home/davidd/temp.mak CFG=Debug
g++ -g "-Wl,-rpath,/omniqdir/arch/x86_64/release/lib:/omniqdir/instantclient_12_1:/usr/lib,-rpath-link,/omniqdir/arch/x86_64/release/lib:/omniqdir/instantclient_12_1:/usr/lib,-ldl,-lpthread" /omniqdir/arch/x86_64/release/lib/libjemalloc.so -o "Debug/temp" Debug/temp.o /omniqdir/instantclient_12_1/libocci.so /omniqdir/instantclient_12_1/libclntsh.so
Debug/temp.o: In function `main':
temp.cpp:(.text+0xac): undefined reference to `_ZNK6oracle4occi8MetaData9getStringB5**cxx11**ENS1_6AttrIdE'
collect2: error: ld returned 1 exit status
gmake: *** [Debug/temp] Error 1
我注意到未定义的引用包含与 c++11 相关的符号,我猜这与我正在使用的新 gcc 编译器有关。
来自 occiControl.h 的函数声明
OCCI_STD_NAMESPACE::string getString(MetaData::AttrId attrid)
我正在使用 Centos 6.6 和最新的 OCCI 版本 Instantclient-basiclite-linux.x64-12.1.0.2.0。
有任何想法吗?
谢谢,大卫