dll中隐式声明 类中函数的隐式声明 如何调用类中的函数dll中

zw0558 2009-06-02 12:21:06
我是通过隐式声明调用函数,在.def文件中对函数进行声明。当我在dll中创建类的时候如何完成类中的函数调用?如果通过在.def文件中函数声明怎么作?还是在通过别的方法去做!请大侠们给出详细的解答?
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
RichyMong 2009-06-03
  • 打赏
  • 举报
回复
帮顶,顺便学习
skyxie 2009-06-02
  • 打赏
  • 举报
回复
你是想把dll中的类导出吗?

   首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL。由于该类会被工程之外的文件所引用,所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。有两种方法可以引出类,使用__declspec(dllexport)定义和使用定义文件。

   下面先讲使用__declspec(dllexport)的方法:将类定义改为:class __declspec(dllexport) CInDLL 就可以了。(译者:你也许不相信会有这么简单,我也不相信。:-) 这样产生的工程在编译时是正确的但是在使用时会产生错误,因为你包含的头文件中也是使用__declspec(dllexport),而使用这个DLL的工程中并没有引出这个类,而是需要引入这个类)在使用时需要将类定义改为class __declspec(dllimport) CInDLL就可以了。

   使用定义文件可以有效的避免这个问题,这种方法是利用宏定义在不同的地方产生不同的编译代码:在头文件中加入如下的代码:

   #ifdef _CLASSINDLL
   #define CLASSINDLL_CLASS_DECL __declspec(dllexport)
   #else
   #define CLASSINDLL_CLASS_DECL __declspec(dllimport)
   #endif  
#endif // ClassInDLL_H  

//将class __declspec(dllexport) CInDLL改为  
class CLASSINDLL_CLASS_DECL CInDLL  
{   CInDLL();  ...  }

   在实现这个类的CPP文件的顶部加入#define _CLASSINDLL语句。
   #define _CLASSINDLL  CInDLL::CInDLL()  {  }  ...

   这样一来在使用这个类时就可以不做任何改动了.
oysoft 2009-06-02
  • 打赏
  • 举报
回复
EXPORT 关键字定义类
或者采用COM DLL
oyljerry 2009-06-02
  • 打赏
  • 举报
回复
__declspec(dllexport) 从DLL中导出你的类,然后import导入对应的lib,包含对应的h文件,就可以直接调用导出的类了
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 skyxie 的回复:]
你是想把dll中的类导出吗?

   首先使用Wizard创建一个Win32 Dynamic-Link Library工程,然后定义一个简单的C++类CInDLL。由于该类会被工程之外的文件所引用,所以需要对这个类进行引出。因为只有引出后所生成的DLL中才带有供足够的信息以在连接和运行时被正确引入到进程空间中。有两种方法可以引出类,使用__declspec(dllexport)定义和使用定义文件。

   下面先讲使用__declspec(dllexport)的方法:将类定义改为:c…
[/Quote]

很详细了
jian_tian_yang 2009-06-02
  • 打赏
  • 举报
回复
帮楼主顶一下

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧