日期:2014-05-17  浏览次数:20968 次

pc文件编译后链接错误(mingw)
mingw+window+oracle9i环境
链接错误:
common/DBHandlerImpl.o:DBHandlerImpl.cpp:(.text+0x4966): undefined reference to `sqlorat(void**, unsigned int*, void*)'
common/DBHandlerImpl.o:DBHandlerImpl.cpp:(.text+0x49ef): undefined reference to `sqlcxt(void**, unsigned int*, sqlexd*, sqlcxp const*)'
collect2: ld returned 1 exit status

找不到sqlcxt和sqlorat定义,应该链接哪个库?怎么链接?
我试过将$(oracle_home)\ora92\bin\orasql9.dll用pexports,dlltool工具转换为orasql9.a后链接,可以减少一部分,最后还剩上面连个错误。
请各位帮忙.

------解决方案--------------------
看一下本来的那个sample的例子吧。(demo_proc.mk这个文件)

cd $ORACLE_HOME/precomp/demo/proc
make -f demo_proc.mk build EXE=sample1 OBJS=sample1.o

这样的话,可以得到一个一览。就是那些编译时候的选项和需要的LIB.

看你的情况,修改你的MK文件,

在$ORACLE_HOME/bin目录下面,执行genclntsh,会得到libclntsh.so这个共享类库的。


------解决方案--------------------
直接连接orasql9.lib或orasql9.dll(注意路径),没任何问题。俺早在2002年给学生讲授proc/c++开发时就用mingw.