做了一个道出类的dll,我用了下面的方法调用:
1.添加该类的头文件的声明
2.连接该dll的lib文件
请问:在上面的2步,我不想用lib文件我想用它的dll文件该如何做?是否可行?

解决方案 »

  1.   

    那就是用显示连接咯
    LoadLibrary
    GetProcAddress
      

  2.   

    可行。即便lib文件没有也没有关系。
    用LoadLibrary在需要dll内的函数时,动态的导入,具体用法见MSDN
    例: typedef long (*rfGetInputStatus)(unsigned short,unsigned short,unsigned short,unsigned short,unsigned short); HINSTANCE hInstance;
    rfGetInputStatus prfGetInputStatus; VERIFY(hInstance=::LoadLibrary("ActiveWaveLib.dll"));
    VERIFY(prfGetInputStatus=(rfGetInputStatus)::GetProcAddress(hInstance,"_rfGetInputPortStatus"));
    m_Result=(*prfGetInputStatus)(m_HostID,m_ReaderID,m_RepeaterID,SPECIFIC_READER,pktID);
      

  3.   

    不可行首先:
    LoadLibrary()
    GetProcAddress()
    这两函数确实可以显示连接dll,但是GetProcAddress()只可得到导出函数的地址,无法得到导出类解决方法:
    你可以导出一个函数,而不导出类,由这个函数产生你需要的对象,类似对象工厂。
      

  4.   

    参阅 我的问题:
    请教斑竹及各位专家:关于DLL中类的动态链接,重要http://expert.csdn.net/Expert/TopicView1.asp?id=1220534
      

  5.   

    不可行对象工厂失去了导出类的意义。例如我的plug-in要对导出类进行派生,此时怎办?
      

  6.   

    可以的,只不过要用到虚拟地址表http://www.codeguru.com/dll/expclass.shtml