Dll导出函数引用Dll外部函数声明

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  导出函数

  _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中声明的函数顺序。

  编辑特别推荐:

  VC++与Matlab混合编程的快速实现

  VC++STL中的LIST类

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答