现在用VC++定义了一个DLL,在DLL中定义有类,和类成员函数,假如要在其他程序中调用此DLL内定义的类或类成员函数,那DLL该怎么输出类或类成员函数。现在编译的是LINK出错。

解决方案 »

  1.   

    LINK出错应该是没有保护lib文件
      

  2.   

    你可以到下面找几个例子看看
    http://www.codeproject.com/dll/
      

  3.   

    谢谢大家的回复,试了一下对类的声明时用__declspec(dllexport),就可以在DLL中输出类以及它的成员函数,那假如只输出派生类,那能不能在调用的时候用基类的成员函数呢?
      

  4.   

    可以用,但是受public protected private等限制,和普通类的一样
      

  5.   

    扩展DLL支持C++接口,换而言之,DLL能够导出整个类,客户可以建立这些类或由这些类的派生的类的对象。扩展的DLL动态的链接到MFC库的DLL版中的代码上,因而扩展DLL要求客户程序动态的连接到MFC库。如果需要可被任意Win32编程环境(包括Visual Basic6.0)加载的DLL,你应该用常规DLL.他的一个比较大的局限性在于常规DLL只能到处C样式的函数,不能导出C++类,成员函数和重载函数。这是因为每一个C编译器都有其自己的修饰名方法。但你可以在常规DLL内部使用C++类以及MFC库。
    http://community.csdn.net/Expert/topic/4498/4498741.xml?temp=.8772547
      

  6.   

    输出类是   AFX_EXT_CLASS
    输出类的成员函数是   __declspec(dllexport)
      

  7.   

    dll里输出函数也需要声明__declspec(dllexport)吧
      

  8.   

    dll输出类的导出函数不用再声明_declspec(dllexport)
    只用在类前声明AFX_EXT_CLASS就可以在另外的工程中引用此导出类中的函数了