AIX occi连接报错请教
环境:AIX 6.1
C++用OCCI链接oracle,写了一个最简单的程序,但总是链接问题:
Compile a.o ......
Link a.o to a......
ld: 0711-224 WARNING: Duplicate symbol: .__divti3
ld: 0711-224 WARNING: Duplicate symbol: .__modti3
ld: 0711-224 WARNING: Duplicate symbol: .__udivti3
ld: 0711-224 WARNING: Duplicate symbol: .__umodti3
ld: 0711-224 WARNING: Duplicate symbol: .__udivmodti4
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
ld: 0711-317 ERROR: Undefined symbol: .oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void*, void* (*)(void*, unsigned long), void* (*)(void*, void*, unsigned long), void (*)(void*, void*))
collect2: ld returned 8 exit status
make: 1254-004 The error code from the last command is 1.
Stop.
但是makefile里已经将相关目录都添加进去了,occi.h,libocci.a libocci.so都有的,不知为何报Undefined symbol: .oracle::occi::Environment::createEnvironment,请各位大侠指教,谢谢!
代码如下:
//a.cpp
#include <iostream>
#include <occi.h>
using namespace std;
using namespace oracle::occi;
main()
{
Environment *env=Environment::createEnvironment();
cout<<"success"<<endl;
}
//makefile
ORACLE_INCLUDES=-I$(ORACLE_HOME)/rdbms/demo \
-I$(ORACLE_HOME)/rdbms/public \
-I$(ORACLE_HOME)/plsql/public \
-I$(ORACLE_HOME)/network/public \
-I$(ORACLE_HOME)/precomp/public
ORACLE_LIBS=-L$(ORACLE_HOME)/lib -L$(ORACLE_HOME)/rdbms/lib
CC=g++ -maix64 $(INC)
INC=$(ORACLE_INCLUDES)
LIB=$(ORACLE_LIBS) -lclntsh -locci
PRG=a
SRC=a.cpp
OBJ=a.o
$(PRG):$(OBJ)
@echo "Link $(OBJ) to $(PRG)......"
@$(CC) $(LIB) -o $(PRG) $(OBJ)
$(OBJ):$(SRC)
@echo "Compile $(OBJ)......"
@$(CC) $(ORACLE_LIBS) -c $(SRC)
.PRONY:clean
clean:
@echo "Removing linked and compiled files......"
@rm -f $(OBJ) $(PRG)
如果把a.cpp中的
Environment *env=Environment::createEnvironment();
改成
Environment *env;
Compile a.o ......
Link a.o to a......
ld: 0711-224 WARNING: Duplicate symbol: .__divti3
ld: 0711-224 WARNING: Duplicate symbol: .__modti3
ld: 0711-224 WARNING: Duplicate symbol: .__udivti3
ld: 0711-224 WARNING: Duplicate symbol: .__umodti3
ld: 0711-224 WARNING: Duplicate symbol: .__udivmodti4
就没有了Undefined symbol: .oracle::occi::Environment::createEnvironment的报错。
难道库文件中还能只定义Environment类型,没定义createEnvironment方法?
请各位指点啊。