程序使用ADO来访问数据库,同时使用Xtreme ToolKit来作界面。使用MFC动态库时,未出任何错误,只要一采用MFC静态库,就会链接出错。错误信息如下:comsupp.lib(comutil.obj) : error LNK2005: "class _variant_t vtMissing" (?vtMissing@@3V_variant_t@@A) 已经在 comsuppw.lib(comutil.obj) 中定义
Release/■■■■■■■.exe : fatal error LNK1169: 找到一个或多个多重定义的符号我估计是ADO的问题,请问高手们,如何解决这个问题?

解决方案 »

  1.   

    1.查看各个lib之间的包含顺序.
      

  2.   

    把包含文件放到stdafx.h文件里吧
      

  3.   

    回楼上的,ADO的头文件,包括import语句,我确实是放在stdafx.h内了,有什么问题吗?
      

  4.   

    回shanhqk(山) :
    小弟我还不知道如何查询LIB文件的包含顺序,请大哥指教一下,谢谢。
      

  5.   

    就是看你引用了几个lib,调整它的顺序
      

  6.   

    回楼上的:
    comsupp.lib,不是我在项目里引用的。
    根据出错的信息提示:class _variant_t vtMissing,我知道这个类是ADO中的COM定义类,所以我认为这是ADO的错误。准确地说,我在“项目属性-链接”这一栏中,一个LIB也没包含。
      

  7.   

    #import那里怎么写的?估计有问题!贴出来!
    看看:  http://faq.csdn.net/read/201845.html
      

  8.   

    //使用#import指针来调用ADO对象
    #include <afxoledb.h>
    # import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF","adoEOF")以上代码,是书上教的。楼上大哥,请指教一下。
      

  9.   

    问题最后还是要靠自己来解决呀。很简单,在项目->属性->链接器->命令行->附加选项中加   /force   
    或者加/FORCE:MULTIPLE问题出现的原因,我思考良久,估计是Xtreme Toolkit的问题。因为我第一次生成Xtreme Toolkit没有生成Static库,后来为了发布为重新生成了Static库,中间似乎是增量编译的,反正有点问题。如果程序里不加Xtreme Toolkit库,静态编译没有问题,如果程序不加ADO调用,仅使用Xtreme也没问题,两者一起用,就出问题。所以不烦了,最简单的方法,+上/force, 呵呵。
      

  10.   

    http://topic.csdn.net/t/20050619/03/4091860.html#http://topic.csdn.net/t/20050525/17/4035191.html
    以上两个地址,感兴趣的可以去看看,我是仔细拜读了一番。