[Linker Error] Unresolved external '_SQLConnect' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ

时间:2021-01-08 04:51:24
我在程序中用WIN API直接连接数据库,但是 link时出现如下错误,请教高手怎么解决,急!!!

[Linker Error] Unresolved external '_SQLConnect' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ
[Linker Error] Unresolved external '_SQLAllocHandle' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ
[Linker Error] Unresolved external '_SQLFreeHandle' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ
[Linker Error] Unresolved external '_SQLExecDirect' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ
[Linker Error] Unresolved external '_SQLBindCol' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ
[Linker Error] Unresolved external '_SQLFetch' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER5\PROJECTS\DATEBASE\UNIT1.OBJ

11 个解决方案

#1


你使用的这个函数引用没有对应的Obj文件,一般
没有包含到工程文件中,是不是没有找到对应的Lib文件?

#2


有没有包含对应的头文件,你是采用什么调用,静态调用,还是动态调用。有些API函数在引用时需要加上一些预编译指令。

#3


我已经include了sql.h和sqlext.h了,在编译的时候都没有错,就是在link的时候,所有API函数前面都被自动加了_  ,例如,SQLFetch变成了_SQLFetch,所以没找到,但不知为何会这样???有什么解决办法

#4


查找.OBJ文件
编译一下第三方控件
加入第三方控件的pbl

#5


to zzzsssccc(天空):听不懂你的意思,能详细一点吗?

#6


应该是你的工程里面没有加入相关的LIB:
  在BCB50的LIB下查找含有"SQLConnect"的文件,有如下四个文件:
       VCLBDE50.LIB
       BDE.DCU
       VCLBDE50.DCP
       ODBC32.LIB
   你如果用BDE的话,可能加VCLBDE50.LIB到工程里

#7


_是BCB编译器自己加的,你查不到。。
你看看unit1这个单元是否加入了你的工程中了。我觉得应该是这个问题。
project->add->选unit1.cpp加入工程

#8


老兄,我已经测试成功,就是将Lib\Psdk\下的ODBC32.LIB加入到你的工程里去:
当然我的测试代码很简单(参数全0,呵呵):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   SQLConnect(0,0,0,0,0,0,0);
}

#9


对就是将这个lib(ODBC32.lib)加入到你的工程中去

#10


还是老错误,怎么都不行,看来我还是用VC写得了

#11


算了,结分了

#1


你使用的这个函数引用没有对应的Obj文件,一般
没有包含到工程文件中,是不是没有找到对应的Lib文件?

#2


有没有包含对应的头文件,你是采用什么调用,静态调用,还是动态调用。有些API函数在引用时需要加上一些预编译指令。

#3


我已经include了sql.h和sqlext.h了,在编译的时候都没有错,就是在link的时候,所有API函数前面都被自动加了_  ,例如,SQLFetch变成了_SQLFetch,所以没找到,但不知为何会这样???有什么解决办法

#4


查找.OBJ文件
编译一下第三方控件
加入第三方控件的pbl

#5


to zzzsssccc(天空):听不懂你的意思,能详细一点吗?

#6


应该是你的工程里面没有加入相关的LIB:
  在BCB50的LIB下查找含有"SQLConnect"的文件,有如下四个文件:
       VCLBDE50.LIB
       BDE.DCU
       VCLBDE50.DCP
       ODBC32.LIB
   你如果用BDE的话,可能加VCLBDE50.LIB到工程里

#7


_是BCB编译器自己加的,你查不到。。
你看看unit1这个单元是否加入了你的工程中了。我觉得应该是这个问题。
project->add->选unit1.cpp加入工程

#8


老兄,我已经测试成功,就是将Lib\Psdk\下的ODBC32.LIB加入到你的工程里去:
当然我的测试代码很简单(参数全0,呵呵):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   SQLConnect(0,0,0,0,0,0,0);
}

#9


对就是将这个lib(ODBC32.lib)加入到你的工程中去

#10


还是老错误,怎么都不行,看来我还是用VC写得了

#11


算了,结分了