想把一个类封装在一个dll中,然后在外部调用,定义对象啊什么的。请问怎么操作,和封装一个方法函数一样吗?
不知道表达清楚不,我演示一下。
假如我在dll中定义的这个类是:A ,此类里面有很多的函数,其中有个show函数。
然后我在工程里面调用这一个类 定义:
   A a;
   a.show();
够清楚了吧,谢谢前辈们指教。

解决方案 »

  1.   

    MARK 在动态库的接口里面这样做过 外面不知道怎么搞
      

  2.   

    class __declspec( dllexport ) A
    {..... 
    };
    这样就可以导出类了,另外的工程包含头文件将__declspec( dllexport ) 改成__declspec( dllimport )就能使用
     
      

  3.   

    用宏定义更好
    #ifdef TEST_EXPORT
    #define TEST_EXPORT __declspec(dllexport)
    #else
    #define TEST_IMPORT __declspec(dllimport)
    #endif
    你直接用dll中,定义一个TEST_EXPORT这样的东西!头文件这样就可以直接被包含了!你引用的地方,就不用了定义TEST_EXPORT这样的东西了!
    class TEST_EXPORT A
    {..... 
    };
      

  4.   

    建一个文本文档,将后缀名改为.def
    在该文件下
    LIBRARY Dll//.dll名
    EXPORTS //导出类
    A
      

  5.   

    当然可以,我可以发给你一个简单的例子。
    不要写什么DEF,只要这样处理:
    #ifndef SDK_SYSTEM_H_
    #define SDK_SYSTEM_H_class SDKEXPORT System
    {
    public:
        // 判断用户是否具有管理员权限
        bool isAdminPrivilege(const wchar_t* userName);    bool getUserName(wchar_t* buf, DWORD len);    // 提升进程权限
        bool setProcessPrivilege(HANDLE process, const wchar_t* privilegeName = SE_DEBUG_NAME);
    };#endif // SDK_SYSTEM_H_其中:
    SDKEXPORT 的定义为:
    #ifdef __cplusplus
    #define DLLEXPORT extern "C" __declspec(dllexport)
    #else
    #define DLLEXPORT __declspec(dllexport)
    #endif#define SDKEXPORT __declspec(dllexport)编译成DLL,包含相关头文件和lib,就可以使用了。
    只是,导出类时,注意:成员变量不要用容器。
    实在要用,就用容器的指针。
      

  6.   

    在头文件下:
    extern "C" __declspec(dllexport) A* CreateInstance()
    {
       return new A();
    }
    A为类名,导出这个函数就可以了使用:
    int main
    {
        A* p = (A*)CreateInstance;
        p->类方法
    }
      

  7.   

    MFC 扩展 DLL
    class AFX_EXT_CLASS CSystem使用时和不是DLL的MFC类一样。
      

  8.   

    我以前是一个mfc里定义的一个类,我把它封装是要改成win32 dll好呢,还是 用mfc dll 。因为我不太明白这连个。要带到的效果是以后不关是mfc还是win32程序都可以调用这个dll不知道行不?
      

  9.   

    我之前是在mfc里定义的一个类,把它封装是要改成win32 dll好呢,还是 用mfc dll 。因为我不太明白这两个的区别。要达到的效果是以后不管是mfc还是win32程序都可以调用这个dll。不知道行不?
      

  10.   

    以前有帖子啊
    http://topic.csdn.net/u/20080508/10/5076a842-2a0e-42be-839f-42f0c26c5ead.html
      

  11.   

    http://www.pconline.com.cn/pcedu/empolder/gj/vc/0607/820674.html
    动态链接程序的编写。这里面有,就是直接导出类。
      

  12.   

    首先声明一个虚类#ifndef _DLL
    __declspec(dllexport) class a
    #else
    __declspec(dllimport)class a
    #endif
    {
       virtual void Show=0;       
    };然后定义类a
    class aa : public a
    {
    public:
          aa();
          ~aa();
     public:
            vois Show();
    }