我在写完程序之后觉得开始写的类之间的函数关系不好,就把类之间的成员函数和定义的变量改了些地方,报了一堆错
Tracetest1Dlg.obj : error LNK2005: "int count" (?count@@3HA) already defined in InfoDlg.obj
Tracetest1Dlg.obj : error LNK2005: "int m_Count" (?m_Count@@3HA) already defined in InfoDlg.objLINK : warning LNK4098: defaultlib "mfc42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib "mfcs42d.lib" conflicts with use of other libs; use /NODEFAULTLIB:libraryTracetest1Dlg.obj : error LNK2001: unresolved external symbol _MsiGetProductInfoA@16
Tracetest1Dlg.obj : error LNK2001: unresolved external symbol _MsiEnumProductsA@8
libcd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main我不知道是为什么?
头文件包含的问题?

解决方案 »

  1.   

    头文件缺少引用保护。
    如果是VC6,需要在头文件中用这种方式保护:
    #ifndef __xxxx_h__
    #define __xxxx_h__// 头文件的具体内容#endif // __xxxx_h__如果是vc7以上,在头文件的最开始中可以简单使用如下语法:
    #pragma once// 头文件的具体内容
      

  2.   

    头文件中不要定义变量。在头文件中出现的变量应当只是一个声明:
    int count; ==> extern int count;
    然后在cpp文件中定义它:int count = some initialize value;
      

  3.   

    error   LNK2005:   "int   count"   (?count@@3HA)   already   defined   in   InfoDlg.obj
    当在头文件定义变量或函数,而有多个源文件包含此头文件时,会报此错误,提示变量或函数多次定义了
    解决方法:只在头文件里声明变量或函数
      

  4.   

    LINK   :   warning   LNK4098:   defaultlib   "mfc42d.lib"   conflicts   with   use   of   other   libs;
    设置编译选项/Mdd指定链接到msvcrtd.dll,而不是链接到libcd.dll
      

  5.   

    Tracetest1Dlg.obj   :   error   LNK2001:   unresolved   external   symbol   _MsiGetProductInfoA@16 
    库没加上libcd.lib(crt0.obj)   :   error   LNK2001:   unresolved   external   symbol   _main 
    设置编译选项/MDd,或者工程设置错了