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

📄 关于vc中的dll的编程.htm

📁 我在网上收集的一些有关vcDLL编程的文章。
💻 HTM
📖 第 1 页 / 共 4 页
字号:
  10.5pt;font-family:Tahoma'><br>
  <br>
  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'><br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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'>Look&nbsp;here!</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>
  void&nbsp;_declspec(dllexport)&nbsp;JustSoSo()<br>
  {<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(NULL,&quot;It's&nbsp;so&nbsp;easy!&quot;,&quot;Hahaha......&quot;,MB_OK);<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'><br>
  class&nbsp;_declspec(dllexport)&nbsp;Easy<br>
  {<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//add&nbsp;your&nbsp;class&nbsp;definition...<br>
  };<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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'>VC</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'><br>
  <br>
  Ok!</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'>Just&nbsp;so&nbsp;easy!<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>
  <br>
  [2]<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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&nbsp;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'><br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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'>LoadLibrary</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</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'>AfxLoadLibrary</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'>GetProcAddress()</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'>FreeLibrary</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</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'>AfxLoadLibrary</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>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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'>.LIB</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'>void&nbsp;JustSoSo();</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'>LoadLibrary()</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'>FreeLibrary().<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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'>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>
  <br>
  [3]<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Regular&nbsp;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'>CWinApp</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'>MFC</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>
  //&nbsp;MyRegularDll.h:main&nbsp;header&nbsp;file&nbsp;for&nbsp;the&nbsp;MYREGULARDLL&nbsp;DLL<br>
  #include&nbsp;&quot;resource.h&quot;&nbsp;//&nbsp;main&nbsp;symbols<br>
  <br>
  class&nbsp;CMyRegularDllApp&nbsp;:&nbsp;public&nbsp;CWinApp<br>
  {<br>
  public:<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CMyRegularDllApp();<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Overrides<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;ClassWizard&nbsp;generated&nbsp;virtual&nbsp;function&nbsp;overrides<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//{{AFX_VIRTUAL(CMyRegularDllApp)<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//}}AFX_VIRTUAL<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//{{AFX_MSG(CMyRegularDllApp)<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;NOTE&nbsp;-&nbsp;the&nbsp;ClassWizard&nbsp;will&nbsp;add&nbsp;and<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;remove&nbsp;member&nbsp;functions&nbsp;here.<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;DO&nbsp;NOT&nbsp;EDIT&nbsp;what&nbsp;you&nbsp;see&nbsp;in&nbsp;these&nbsp;blocks<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;of&nbsp;generated&nbsp;code&nbsp;!<br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//}}AFX_MSG<br>
  <br>
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DECLARE_MESSAGE_MAP()<br>
  };<br>
  <br>
  //MyRegularDll.cpp:Defines&nbsp;the&nbsp;initialization&nbsp;routines&nbsp;for&nbsp;the&nbsp;DLL.<br>
  //<br>
  <br>

⌨️ 快捷键说明

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