AIX occi连接报错请教

simplep 2012-02-15 01:56:45
环境: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方法?
请各位指点啊。
...全文
158 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhyp011 2012-03-09
  • 打赏
  • 举报
回复
换xlC编译

64,681

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧