DLL的Hello world

来源:互联网 发布:手机浏览器不加载js 编辑:程序博客网 时间:2024/05/24 03:11
HelloWorld示例 DLL 和应用程序XXXXXXXX 在Microsoft VisualC++ 6.0中,可以通过选择“Win32 动态链接库”项目类型或“MFC应用程序向导 (dll)”来创建 DLL。下面的代码是一个在 Visual C++ 中通过使用“Win32 动态链接库”项目类型创建的DLL 的示例。
 //////////////////////////////////////////////////////////////////////SampleDLL.cpp
  //#include"stdafx.h"
  #defineEXPORTING_DLL
  #include"sampleDLL.h"
  BOOLAPIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOIDlpReserved)
  {
  returnTRUE;
  }
  voidHelloWorld(){
  MessageBox(NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);
  }

  /////////////////////////////////////////////////////////////////////File: SampleDLL.h
  //#ifndefINDLL_H
  #defineINDLL_H
  #ifdefEXPORTING_DLLextern __declspec(dllexport) void HelloWorld();
  #elseextern__declspec(dllimport) void HelloWorld() ;
  #endif
  #endif



  下面的代码是一个“Win32应用程序”项目的示例,该示例调用 SampleDLL DLL 中的导出 DLL 函数。
  /////////////////////////////////////////////////////////////////////SampleApp.cpp
  //#include"stdafx.h"
  #include"sampleDLL.h"
  intAPIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTRlpCmdLine,int nCmdShow)
  {
  HelloWorld();
  return0;
  }



  注意:在加载时动态链接中,您必须链接在生成 SampleDLL 项目时创建的SampleDLL.lib 导入库
  在运行时动态链接中,您应使用与以下代码类似的代码来调用SampleDLL.dll 导出 DLL 函数。
  ...
  typedefVOID (*DLLPROC) (LPTSTR);
  ...
  HINSTANCEhinstDLL;
  DLLPROCHelloWorld;
  BOOLfFreeDLL;
  hinstDLL= LoadLibrary("sampleDLL.dll");
  if(hinstDLL != NULL)
  {
  HelloWorld= (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");
  if(HelloWorld != NULL)
  (HelloWorld);
  fFreeDLL= FreeLibrary(hinstDLL);
  }
  ...
原创粉丝点击