解决方案 »

  1.   

    你是在编译一个动态库吗?似乎Data类的一个构造函数找不到函数体。
    如果Data类是你程序中的,那么看一下cpp文件是否引入工程
    如果Data是来自于某个库,那么看一下相应的lib文件是否引入工程
    总之要让编译器链接时能找到函数的实现
      

  2.   

    Data所在的cpp文件是否包含进工程
      

  3.   

    应该是cpp文件没有添加进工程
      

  4.   

    你连接的DLL中,两个DLL模块的地址产生了冲突,此时,必须对其中一个DLL模块的默认地址进行修正,所以,你应该改变编译器的默认设置,错误提示中已经说的很明白了。
    将编译器的连接选项修改成/nodefaultlib1. 打开该项目的 “属性页”对话框。 有关详细信息,请参见 设置 Visual C++ 项目属性。 2. 单击 “链接器”文件夹。 3. 单击 “输入”属性页。 4. 选择 “忽略所有默认库”属性或在 “忽略指定库”属性中指定要忽略的库列表。 “命令行”属性页将显示对这些属性所做的更改的效果。 或者在你的源程序头一行,加上:
    #pragma comment(linker, "/nodefaultlib:LIBCMT")
      

  5.   

    UP主,我也遇到过这种问题,我是这样解决的:
    lib文件也是分32位和64位的,win32项目是不能编译64位的,你可以在属性-配置管理器里改成x64平台,不过这样.exe就不能再32位系统运行;或者去网上下一个32位的文件,替代该文件。
      

  6.   

    @gmxydm,错误提示LIBCMT仅仅是个警告而已,我之前按照你的方法已经试过了,顶多警告信息不显示,error还是存在
      

  7.   

    我这个错误可能是由于项目中有stlport ,platformsdk造成的,但我不知道该怎么修改,我已经把stlport在vc的directory中放到了最上面
      

  8.   

    1、初步看来,肯定是没找到对应的函数实现,你确定实现了对应的函数?
    2、如果是dll动态库,是不是函数没有导出呢?
      

  9.   


    1楼完全正解。楼主记住,出现LINK错误就是因为编译器找不到函数体的实现,只有函数的声明