我把一个C++类做成动态库DLL,外部程序怎样调用他生成一个对象呢?大家说说.

解决方案 »

  1.   

    外部程序调用的时候
    根据指针的映射得到DLL的方法来实现具体的功能的
    如果需要生成对象,可以考虑把这个类输出
      

  2.   

    大家方法也可以.
    我的DLL是一个基于MFC的扩展动态库.
    如下:
    static AFX_EXTENSION_MODULE SelDLL = { NULL, NULL };extern "C" int APIENTRY
    DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
    {
    UNREFERENCED_PARAMETER(lpReserved); if (dwReason == DLL_PROCESS_ATTACH)
    {
    TRACE0("SEL.DLL Initializing!\n");

    if (!AfxInitExtensionModule(SelDLL, hInstance))
    return 0; new CDynLinkLibrary(SelDLL);
    C2ModeFD::RegisterClass("C2ModeFD", RUNTIME_CLASS(C2ModeFD));
    }
    else if (dwReason == DLL_PROCESS_DETACH)
    {
    TRACE0("SEL.DLL Terminating!\n");
    AfxTermExtensionModule(SelDLL);
    }
    return 1;   // ok
    }
    外部调用的时候能不能利用MFC的类型识别和动态创建来实例化一个C2ModeFD对象来使用呢?
      

  3.   

    采用输出类的方法,在dll中定义类用class __declspec(dllexport) 类名
      

  4.   

    利用MFC的类型识别和动态创建来实例化一个C2ModeFD对象可以吗?谁知道呀
      

  5.   

    那也得输出类,否则MFC怎么知道是什么类型
      

  6.   

    CRuntimeClass* pRuntimeClass = RUNTIME_CLASS();
    通过它可以动态创建吗?如何做
      

  7.   

    DLL一般都是直接完成功能的.就像你用API的一样.
      

  8.   

    DLL也可以以对象的方式给外部提供服务.
      

  9.   

    其实我想那样做的目的是,基与基类的应运可以不变,面对不同的情况,只要改变DLL就行,比如不同的协议可以封装在不同的DLL里面,这样一来系统很灵活.这个系统应运相对稳定,而一些通信协议会情况不同而不同.