在对话框程序中包含了strmbasd.lib
在编译时出现链接错误LNK2005
strmbasd.lib(wxutil.obj) : error LNK2005: "public: __thiscall CCritSec::CCritSec(void)" (??0CCritSec@@QAE@XZ) already defined in TestDlg.obj
但是在另外一个控制台程序中也包含这个文件时,同样的用法却没有出现这个错误,请问该如何解决?

解决方案 »

  1.   

    rivershan(笨猫):那个控制台程序是DirectX中的一个例子,我想把它用到我的程序中,在那个lib工程中定义了下面的类:
    CCritSec::CCritSec() 
    {
      
    }CCritSec::~CCritSec() 
    {
      
    }void CCritSec::Lock() 
    {
      
    }void CCritSec::Unlock() 
    {
      
    }在我的工程中的一个类中定义了下面的函数:
        void Lock()
        {
            。。
        }
        void Unlock()
        {
            。。
        }
    但是同样的定义在控制台程序中没有出错。
      

  2.   

    psusong:你说的是Debug Multithreaded DLL吗,对话框程序好像只能用Debug Multithreaded DLL,我把lib工程和对话框工程都用Debug Multithreaded DLL编译,还是有这个错误。
      

  3.   

    可能是你的strmbasd.lib里有全局变量,而对话框是多线程的。
    因为在使用CreateThird()的多线程程序中,不能连接C运行库(因其存在全局变量)。