设为首页 加入收藏

TOP

Dll导出函数引用Dll外部函数声明
2014-11-10 19:15:11 】 浏览:2993
Tags:Dll 导出 函数 引用 外部 声明

  导出函数


  _declspec(dllexport) int function()


  导出类


  class _declspec(dllexport) class1


  引用Dll函数声明


  _declspec(dllimport) int function()


  解决不同编译器名字改编的问题


  在定义导出函数时加上 extern "C" (大写C),如 extern "C" _declspec(dllexport) int function()


  但这种方法有一个缺陷,不能用于导出一个类的成员函数,只能用于导出全局函数这种情况。


  标准调用约定_stdcall


  于是可以声明为 extern "C" _declspec(dllexport) int _stdcall function()


  最终解决 采用模块定义文件(DEF)


  如在?Dll2工程中添加Dll2.def文件


  Dll2.def 文件内容可以如下:


  LIBRARY Dll2


  EXPORT


  function()


  显示加载方式加载Dll


  LoadLibary函数 例如:


  HINSTANCE hInst=LoadLibrary(_T("User32.DLL"));


  if(hInst)


  {


  typedef BOOL (WINAPI * MYFUNC)(HWND,COLORREF,BYTE,DWORD);


  MYFUNC fun=NULL;


  //取得SetLayeredWindowAttributes函数指针


  fun=(MYFUNC)GetProcAddress(hInst,"SetLayeredWindowAttributes");


  if(fun)


  {


  fun( this->GetSafeHwnd(), RGB(255,0,255) , 0 , LWA_COLORKEY );


  }


  FreeLibrary(hInst);


  }


  根据序号访问Dll中的导出函数


  MAKEINTRESOURCE宏把指定的函数序号转换为相应的函数名字字符串,这里的函数序号就是在Dll中声明的函数顺序。


  编辑特别推荐:


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇子类调用父类构造函数和析构函数.. 下一篇结构体、类的成员对齐

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目