⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 基于visualc++6.0的ddl编程实现.htm

📁 我在网上收集的一些有关vcDLL编程的文章。
💻 HTM
📖 第 1 页 / 共 5 页
字号:
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DllMain</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数添加初始化代码和结束代码。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  三、动态链接库的创建</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  在</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Visual C++6.0</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>开发环境下,打开</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>File\New\Project</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>选项,可以选择</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Win32
  Dynamic-Link Library</span><span style='mso-bidi-font-size:10.5pt;font-family:
  宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:
  Tahoma'>或</span><span lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:
  Tahoma'>MFC AppWizard[dll]</span><span style='mso-bidi-font-size:10.5pt;
  font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;
  mso-bidi-font-family:Tahoma'>来以不同的方式来创建</span><span lang=EN-US
  style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Non-MFC Dll</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Regular Dll</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Extension Dll</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>等不同种类的动态链接库。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  </span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>1</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>.</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'> Win32
  Dynamic-Link Library</span><span style='mso-bidi-font-size:10.5pt;font-family:
  宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:
  Tahoma'>方式创建</span><span lang=EN-US style='mso-bidi-font-size:10.5pt;
  font-family:Tahoma'>Non-MFC DLL</span><span style='mso-bidi-font-size:10.5pt;
  font-family:宋体;mso-ascii-font-family:Tahoma;mso-hansi-font-family:Tahoma;
  mso-bidi-font-family:Tahoma'>动态链接库</span><span lang=EN-US style='mso-bidi-font-size:
  10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  每一个</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>必须有一个入口点,这就象我们用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>C</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>编写的应用程序一样,必须有一个</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>WINMAIN</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数一样。在</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Non-MFC DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>中</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DllMain</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是一个缺省的入口函数,你不需要编写自己的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>入口函数,用这个缺省的入口函数就能使动态链接库被调用时得到正确的初始化。如果应用程序的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>需要分配额外的内存或资源时,或者说需要对每个进程或线程初始化和清除操作时,需要在相应的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>工程的</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>.CPP</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件中对</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DllMain()</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>函数按照下面的格式书写。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  <br>
  BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID
  lpReserved)<br>
  {<br>
  switch( ul_reason_for_call )<br>
  {<br>
  case DLL_PROCESS_ATTACH:<br>
  .......<br>
  case DLL_THREAD_ATTACH:<br>
  .......<br>
  case DLL_THREAD_DETACH:<br>
  .......<br>
  case DLL_PROCESS_DETACH:<br>
  .......<br>
  }<br>
  return TRUE;<br>
  } <br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  参数中,</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>hMoudle</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是动态库被调用时所传递来的一个指向自己的句柄</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>(</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>实际上,它是指向</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>_DGROUP</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>段的一个选择符</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>)</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>;</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>ul_reason_for_call</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是一个说明动态库被调原因的标志,当进程或线程装入或卸载动态链接库的时候,操作系统调用入口函数,并说明动态链接库被调用的原因,它所有的可能值为:</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL_PROCESS_ATTACH:
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>进程被调用、</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL_THREAD_ATTACH:
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>线程被调用、</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL_PROCESS_DETACH:
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>进程被停止、</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL_THREAD_DETACH:
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>线程被停止;</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>lpReserved</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>为保留参数。到此为止,</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的入口函数已经写了,剩下部分的实现也不难,你可以在</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>工程中加入你所想要输出的函数或变量了。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  我们已经知道</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>是包含若干个函数的库文件,应用程序使用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>中的函数之前,应该先导出这些函数,以便供给应用程序使用。要导出这些函数有两种方法,一是在定义函数时使用导出关键字</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>_declspec(dllexport)</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,另外一种方法是在创建</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件时使用模块定义文件</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>.Def</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>。需要读者注意的是在使用第一种方法的时候,不能使用</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DEF</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件。下面通过两个例子来说明如何使用这两种方法创建</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
  style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
  mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件。</span><span
  lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
  <br>
  </span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
  Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>  </span><span

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -