各位大虾:
   我想调用一个由dll导出的类,需要将其中的函数定义为全局变量,定义一个导出的类,应该定义在那里?由该怎样调用?
    另外:ZeroMemory()应在程序的那里启动?
    
    谢谢!!

解决方案 »

  1.   

    参考一下如何在Dll中导出class说明:新建两个工程,其中一个是dll工程(我的示例程序中这个工程名为DllClass),另一个是测试和使用dll的工程(名字为DllClassTest) 
    注意点:
       1。Dll工程编译完成后,将.lib和.dll文件拷贝到测试和使用dll的工程的适当目录下(我的程序是release目录),然后将
          Dll工程中的导出类的头文件(以下简称头文件)拷贝到测试和使用dll的工程的适当目录下(在我的程序中是拷贝到此工程文件所在目录),然后把这个拷贝过来的头文件通过下面2和3进行修改。   2。在Dll工程中的头文件使用的是 #define DLLCLASS_API __declspec(dllexport)  表示导出
          在测试和使用dll的工程中的头文件使用的是 #define DLLCLASS_API __declspec(dllimport)   表示导入   3。不论Dll工程的头文件如何实现(比如说包括内联函数等等),
           在测试和使用dll的工程中的头文件中全部都是声明而没有定义(即将类成员函数的实现部分去掉)   4。在测试和使用dll的工程的那个文件中包含对dll库的引入,分两步:
           首先在是测试和使用dll的工程的setting菜单(按ALT+F7可以调出)中的LINK选项卡中的Object/Library modules:下填写对 dll的连接,比如dll文件名字为DllClass.lib和DllClass.dll,则填写 Release/DllClass.lib(注意目录,我的程序中.lib文件是在目录release下)。
           然后,添加对头文件的包含,比如dll文件名字为DllClass.lib和DllClass.dll,头文件为DllClass.h,则包含头文
    件为 #include "DllClass.h"
      
        由此,就可以使用了。相关源码如下:
    dll工程中的DllClass.h 内容:
    //此处在dll的头文件中为 dllexport,在应用文件中为dllimport
    #define DLLCLASS_API __declspec(dllexport)//导出一个类(包括其方法、属性)
    class DLLCLASS_API CDllClass {
    public:
     CDllClass(void);
     void MSG(const char * const str);
    };dll工程中的DllClass.cpp内容:
    #include "stdafx.h"
    #include "DllClass.h"BOOL APIENTRY DllMain( HANDLE hModule, 
                           DWORD  ul_reason_for_call, 
                           LPVOID lpReserved
          )
    {
        switch (ul_reason_for_call)
     {
      case DLL_PROCESS_ATTACH:
      case DLL_THREAD_ATTACH:
      case DLL_THREAD_DETACH:
      case DLL_PROCESS_DETACH:
       break;
        }
        return TRUE;
    }
    CDllClass::CDllClass()

     return; 
    }void CDllClass::MSG(const char * const str)
    {
      MessageBox(NULL,str,"",MB_OK);
    }Dll测试工程中的DllClass.h内容:
    //此处在dll的头文件中为 dllexport,在应用文件中为dllimport
    #define DLLCLASS_API __declspec(dllimport)//导出一个类(包括其方法、属性)
    class DLLCLASS_API CDllClass {
    public:
     CDllClass(void);
     void MSG(const char * const str);
    };
    Dll测试工程中DllClassTest.cpp内容:
    首部:
    #include "DllClass.h"
    class DllClass;代码部分:
     CDllClass  CTest;
     CTest.MSG("this is a string into dll");
      

  2.   

    定义导出类很简单~
    class __declspec(dllexport) myclass
    {
        ....
    }
      

  3.   

    1 __declspec(dllexport) 来定义你的类,在使用的时候用__declspec(dllimport)来定义2 ZeroMemory可以用来对数据进行初始化,可以在任何地方使用