1>------ Build started: Project: FWUpgrade, Configuration: Debug Win32 ------
1>Linking...
1>FWHost.obj : error LNK2019: unresolved external symbol "public: __thiscall DBR701::~BR701(void)" (??1BR701@@QAE@XZ) referenced in function __unwindfunclet$??0BRHost@@QAE@XZ$0
1>FWHost.obj : error LNK2019: unresolved external symbol "public: __thiscall DBR701::BR701(int)" (??0BR701@@QAE@H@Z) referenced in function "public: __thiscall DBRHost::DBRHost(void)" (??0DBRHost@@QAE@XZ)
..............
1>D:\Firmware Upgrade\FWUpgrade\Debug\FWUpgrade.exe : fatal error LNK1120: 13 unresolved externals老是出现这种错误,编译不过去,
麻烦大家看看,多谢了,

解决方案 »

  1.   

    你肯定使用了某一个DLL,用了头文件,但是lib文件没有配置!
    将LIB文件配置一下
      

  2.   

    DBR701 是一个dll中的类? 那你需要把这个dll添加到你的工程依赖里面没有在dll中? 那么把 DBR701.cpp 加到你的工程中来
      

  3.   

    DBR701 这个类实现的cpp等文件添加到工程
      

  4.   

    DBR701 已经加了,这些错误就是加了之后出现的,
      

  5.   

    不是说没加之前没有,
    就是说在把源代码转移过来和.lib的文件加过来是同步进行的,
      

  6.   

    添加源码到工程,工程设置中设置对应的lib,你要看你的lib路径是否设置正确
      

  7.   

    想请问一下:可以看到,是在Link的时候出现错误的,
    怎么会出现FWHost.obj的错误?
    这种object文件是用来做什么的,
      

  8.   

    obj是中间文件,它编译的时候生成,要进行link,FWHost.obj表明FWHost的相关代码中用到了DBR701,需要link对应的lib或DBR701实现的cpp
      

  9.   

    现在的问题是大家都知道怎么解决...就你不知道...可能1:
    DBR701这个类是封装在xxx.dll中的.  那么, 你的工程属性 -- linker -- input中有没有xxx.lib? 可能2:
    DBR701这个类是直接使用的, 没有封装在dll中.  那么, 你的工程 -- source files 里面有没有 DBR701.cpp?
      

  10.   

    先谢谢,上面已经说了,工程属性 -- linker -- input中有xxx.lib,
    第二个可能不存在了,
      

  11.   

    xxx.lib是否放在你的工程目录下.
      

  12.   

    谢谢楼上耐心的回答,的确是放在工程下指定的目录里的,这个我还是比较清楚的,
    如果没有放在知道目录里,根本不肯能compile成功,
    现在是link时出错,
      

  13.   

    link时才会使用.lib. (compile的时候只需要.h申明了就可以了)
    应该就是.lib路径没有设置好造成的工程属性 -- linker -- input , 鼠标点到 additional dependcy上, 右边出现个 "..."的按钮, 点击后就出来所有依赖的.lib
    确保每行只有一个.lib比如你的lib叫 DBR701.lib 那你把它改成 DBR701_not_exist.lib 看看是不是报相同的错~或者使用 DBR701.lib 的绝对路径,看看是否OK
      

  14.   

    客气的话就不多说了,非常感谢!照你说的改了后出现如下错误:
    1>Generating Code...
    1>Linking...
    1>LINK : fatal error LNK1104: cannot open file '..\DBRLib\DBRLib_not.lib'
    没有出现之前的错误,不知道这说明什么问题?
      

  15.   

    如果改为绝对路径指到所对应的.lib文件,则出现另外一个错误:
    1>Linking...
    1>LINK : fatal error LNK1104: cannot open file 'E:\wf.obj'并且这个obj文件在我整个工程的文件夹里都没有找到,
      

  16.   

    1. 保证头文件和静态库的依赖路径是正确添加的
    2. 保证静态库文件名称加入静态库依赖中,并保证如yyq_leaf所答
    3. 看是否使用了预编译选项,全部rebuild暂时就知道这些了
      

  17.   

    貌似原来的lib是找到了的,但是lib中又没有 DBR701 类...你确认 lib (dll中导出DBR701类)是OK的?
      

  18.   


    还缺wf.obj工程中有没有 wf.h, wf.cpp?
      

  19.   

    还有一个问题,就是如果这个Test.lib和Test.h是用Unicode写的,
    但是我现在调用的工程是MultiByte的,这样会不会出现上面的问题?
      

  20.   

    还有另外两个问题,不是很明白:1、这个被调用的lib和.h文件原来是用在WinCE下的,现在我想直接用在Win32下,不知道可以不?2、比如说我要调用Test.lib,是不是必须得用对应的Test.h,就是说文件名是否必须一致?如果为Test1.h行不,
      

  21.   


    我想不行的可能性比较大些,
    skyxie,你说我的这些错误是不是和这个有关呢?谢谢了。
      

  22.   


    肯定不行三~ 你要把这个lib的src拿到win32下重新编译一遍...
      

  23.   

    谢谢skyxie!
    那我的这个问题呢:
    2、比如说我要调用Test.lib,是不是必须得用对应的Test.h,就是说文件名是否必须一致?如果为Test1.h行不,
    这个行吗?另外,我没有那个lib的src,所以没办法重新编译,
    但是我看他在子文件里提供了XP目录,里面有
    ..\XP\release\XPLib.lib
    ..\XP\debug\XPLib.lib但是没有XPLib.h文件,只有之前搭配Test.lib一起的Test.h,不知道是否能用?
      

  24.   

    使用 XPLib.lib + Test.h
      

  25.   

    错误信息是很明显的,就是这个DBR701类的某些特定的构造函数没有实现函数体;问题也是很明显的,如果是该类还有其他成员函数但是没有报告其他函数没有实现的错误,那么就是仅仅这两个函数没有函数体,仔细检查代码;如果是该类只有这两个函数,并且该类在dll中,可能是dll没有导出类;如果该类代码在本身项目中,那么就是没有实现函数体(或者cpp文件没有加入编译中)。(lib文件路径错误会报类似18楼的错误“cannot open file '..\DBRLib\DBRLib_not.lib' ”,所以不用考虑)。