亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 20000922008.htm

?? C++ Builder學習中文版,讓學者對其有一定的理解.
?? HTM
字號:
<HTML>

<HEAD>

 

<TITLE>在VB中如何調用C++Builder創建的DLL</TITLE>



<META content="MSHTML 5.00.2314.1000" name=GENERATOR>

</HEAD>

<BODY aLink=#FF0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0 

vLink=#990099>



<div align="center">

  <table width="744" border="0" cellspacing="0" cellpadding="0" height="76">

    <tr> 

      <td>

        <center>

          <h2><font size="3"><br>

            在VB中如何調用C++Builder創建的DLL</font><font color="#0000c0"> </font></h2>

          <h3><font size="2">合肥電子工程學院計算中心 <br>

            李 強 </font></h3>

        </center>

        <p align="left"><font color=#ffffff>----</font> C++Builder具有強大的創建Dynamic 

          Link Library 的能力。許多C++Builderr的書藉在創建使用DLL的章節中直接引用的聯機文檔中的例子。但在Visual 

          C++和VB中直接調用該示例生成的DLL卻出現了一些問題,現在我們結合在VB中的調用給出解決方法。示例代碼如下所示: <xmp>////////////////////////// 

          // Mydll.cpp ////////////////////////// double dblValue(double); double 

          halfValue(double); extern __declspec(dllexport) double changeValue(double, 

          bool); double dblValue(double value) { return value * value; }; double 

          halfValue(double value) { return value / 2.0; } double changeValue(double 

          value, bool whichOp) { return whichOp ? dblValue(value) : halfValue(value); 

          } </xmp><font color=#ffffff>----</font> 對于外部調用函數加入了__declspec(dllexport)修飾成分,這和Visual 

          C++是相同的,說明該函數將自動從DLL中導出,并對任何調用程序可用。然后,對上述代碼在C++Builder環境中編譯鏈接生成Mydll.DLL和Mydll.Lib,并將Mydll.DLL拷入Windows\system目錄下(由于VB默認的查找DLL的目錄為Windows\system)。 

        <p align="left"><font color=#ffffff>----</font> 在VB5.0中新建一個應用,并添加一個模塊,在模塊中將函數調用說明如下: 

          <xmp>Declare Function changeValue Lib "mydll" (ByVal Value As Double, 

          ByVal WhichOp As Boolean) As Double </xmp><font color=#ffffff>----</font> 

          然后在窗體的一個按鈕的Click事件中調用changeValue,對該函數進行測試。測試代碼如下: <xmp> Dim aa As Double 

          aa = changeValue(10,True) </xmp><font color=#ffffff>----</font> 實際運行中出現了“找不到DLL入口點changeValue 

          in MyDll”的錯誤信息。 

        <p align="left"><font color=#ffffff>----</font> 這時利用資源管理中的快速查看功能查看Mydll.DLL,在Export 

          Table中有關信息如下: 

        <div align="left"> 

          <pre>  Ordinal       EntryPoint        Name 

  0000         00013c4      @changeValue$qd4bool

</pre>

          <font color=#ffffff>----</font> 發現changeValue函數除了函數名外之外前后還有@、$等附加字符。查閱有關資料得知這是由于編譯器對C++名字的修整造成的,由于Microsoft的Visual 

          C++和Borland的C++ Builder的修整方式不同,在分別修整C++名字的時候,對于相同的函數當然就不會出現相同的名字。好再C++語言通過從系統內定義的函數和對象中刪除修整,從而有效地解決這一問題。 

        </div>

        <p align="left"><font color=#ffffff>----</font> 將語句extern “C” 放置在程序中的代碼塊內,編譯器就將不會修整這塊代碼。這時將Mydll.cpp有關代碼修改如下: 

          <xmp>extern “C” __declspec(dllexport) double changeValue(double, bool); 

          </xmp><font color=#ffffff>----</font> 再次查看重新生成的Mydll.DLL,這時Export table中的有關信息如下: 

          <xmp> Ordinal EntryPoint Name 0000 00013c4 _changeValue </xmp><font color=#ffffff>----</font> 

          @、$等字符沒有了,但在函數名多了一條”_”線。將Mydll.DLL重新拷入windows\system目錄下,并在VB的模塊中修改調用說明如下: 

          <xmp>Declare Function changeValue Lib "mydll" Alias “_changeValue” (ByVal 

          Value As Double, ByVal WhichOp As Boolean) As Double </xmp><font color=#ffffff>----</font> 

          運行VB測試程序,出現”DLL 調用約定錯誤”的錯誤提示信息。說明changeValue找到了,只是調用約定不對。我們知道調用約定有__fastcall、__pascal、__stdcall、__cdecl四種方式,而在C++Builder中默認調用約定為__cdecl方式,而VB中調用約定為__stdcall方式。 

        <p align="left"><font color=#ffffff>----</font> 再將Mydll.cpp的代碼修改如下: <xmp>extern 

          “C”__declspec(dllexport) double __stdcall changeValue(double, bool); 

          …… double __stdcall changeValue(double value, bool whichOp) { return 

          whichOp ? dblValue(value) : halfValue(value); } …… </xmp><font color=#ffffff>----</font> 

          這時查看重新編譯鏈接生成的Mydll.DLL,Export table中的有關信息如下: 

        <div align="left"> 

          <pre>  Ordinal       EntryPoint        Name 

  0000         00013c4       changeValue

</pre>

          <font color=#ffffff>----</font> 發現函數名前的“_”線也沒有,再次修改VB中調用說明如下: <xmp>Declare 

          Function changeValue Lib "mydll" (ByVal Value As Double, ByVal WhichOp 

          As Boolean) As Double </xmp><font color=#ffffff>----</font> 運行測試程序,運行結果正確。 

        </div>

        <p align="left"><font color=#ffffff>----</font> 后又將__stdcall調用約定方式改__pascal調用約定方式,運行結果同樣正確,但改為__fastcall調用約定方式不行。 

        <p align="left"><font color=#ffffff>----</font> 上面所討論的解決方法不僅適用VB,該方法同樣適樣Visual 

          C++,這樣使Visual C++和C++ Builder 不同編譯器生成的DLL可以互相兼容。 </p>

      </td>

    </tr>

  </table>

 

</div>

</BODY></HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲卡通欧美制服中文| 国产一区二区三区四| 麻豆成人久久精品二区三区红 | 欧美精品一区二区三区高清aⅴ | 91精品在线免费观看| 国产清纯白嫩初高生在线观看91 | 国产亚洲综合色| 亚洲va国产va欧美va观看| 丁香六月久久综合狠狠色| 欧美丝袜丝交足nylons图片| 久久午夜色播影院免费高清| 性做久久久久久久免费看| 99免费精品视频| 久久免费午夜影院| 蜜桃av一区二区三区| 欧美在线观看18| 亚洲婷婷综合色高清在线| 国产精品一区二区你懂的| 7777精品伊人久久久大香线蕉超级流畅| 欧美经典三级视频一区二区三区| 青青草原综合久久大伊人精品优势| 色哦色哦哦色天天综合| 中文av一区二区| 国产精品一区二区视频| 日韩欧美国产综合一区 | 五月激情综合色| 日本韩国一区二区| 亚洲三级免费观看| 99久免费精品视频在线观看| 精品福利一区二区三区| 精品视频一区 二区 三区| 国产精品免费视频观看| 日本乱码高清不卡字幕| 天天免费综合色| 国产精品午夜在线观看| 人人精品人人爱| 中文字幕一区二区在线观看| 国产精品污污网站在线观看| 色香色香欲天天天影视综合网| 成人免费三级在线| av一区二区久久| 欧美精品日韩一本| 亚洲乱码国产乱码精品精的特点| 一区二区三区在线免费视频| 成人污污视频在线观看| 久久亚区不卡日本| 国产精品久线在线观看| 欧美一二三区在线| 国产精品理论片在线观看| 轻轻草成人在线| 色国产精品一区在线观看| 久久精品人人做| 国产日韩影视精品| 综合激情成人伊人| 中文字幕二三区不卡| 亚洲精品免费在线| 亚洲综合在线第一页| 男人操女人的视频在线观看欧美| 色综合天天综合给合国产| 国产网红主播福利一区二区| 精品一区二区三区在线视频| 久久这里只精品最新地址| 国产一区福利在线| 五月天婷婷综合| 欧美性一级生活| 成人免费高清在线观看| www国产精品av| 国产一区二区三区视频在线播放| 亚洲综合成人在线视频| 国产精品日日摸夜夜摸av| 精品黑人一区二区三区久久| 欧美日韩免费一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 日韩av电影天堂| 亚州成人在线电影| 亚洲成人免费影院| 亚洲综合自拍偷拍| 一区二区欧美精品| 亚洲精品成人少妇| 欧美国产精品久久| 国产欧美日韩精品a在线观看| 精品久久久久久久久久久院品网| 欧美日韩免费视频| 欧美日韩在线亚洲一区蜜芽| 色婷婷久久久亚洲一区二区三区 | 欧美一级二级三级乱码| 欧美日韩黄视频| 在线观看一区日韩| 欧美在线观看视频一区二区| 欧美在线免费观看亚洲| 在线国产亚洲欧美| 欧美色图在线观看| 在线播放91灌醉迷j高跟美女 | 欧美日韩一级大片网址| 欧美亚洲一区二区在线观看| 欧美三级三级三级爽爽爽| 欧美高清精品3d| 91精品久久久久久久91蜜桃| 欧美一区二区三区在| 精品国产精品网麻豆系列| 久久精品一区二区三区av| 中文成人综合网| 亚洲国产综合人成综合网站| 日韩精品乱码av一区二区| 久久精品久久精品| 国产乱码一区二区三区| 99久久99久久精品国产片果冻| 99精品国产99久久久久久白柏| 日本电影亚洲天堂一区| 337p粉嫩大胆噜噜噜噜噜91av| 精品国产免费久久 | 欧美精品在线一区二区三区| 5月丁香婷婷综合| 久久久久久久久蜜桃| 日韩伦理av电影| 视频精品一区二区| 国产一区日韩二区欧美三区| aa级大片欧美| 538在线一区二区精品国产| 精品国产91洋老外米糕| 国产精品免费视频一区| 日韩在线一区二区| 成人激情免费视频| 欧美日韩精品综合在线| 久久综合九色综合97_久久久| 中文字幕在线不卡视频| 午夜电影一区二区| 成人免费高清在线观看| 欧美日韩夫妻久久| 日本一区免费视频| 视频在线在亚洲| 成年人国产精品| 日韩欧美精品在线视频| 亚洲人成7777| 国产麻豆91精品| 欧美三级韩国三级日本三斤| 久久久精品人体av艺术| 亚洲国产成人va在线观看天堂| 国产成人综合自拍| 欧美三级在线看| 日韩美女精品在线| 国产一区二区不卡在线| 欧美日韩久久一区二区| 欧美国产乱子伦| 久久se这里有精品| 欧美日韩www| 亚洲激情校园春色| 国产一区二区三区四区在线观看| 欧美日韩高清一区二区不卡| 中文字幕色av一区二区三区| 国产一区二区调教| 欧美一区二区大片| 亚洲一区二区影院| 97久久久精品综合88久久| 久久久精品中文字幕麻豆发布| 蜜臀va亚洲va欧美va天堂| 欧美日韩一区中文字幕| 亚洲精品一二三四区| 国产91露脸合集magnet| 2024国产精品| 捆绑变态av一区二区三区| 7777精品伊人久久久大香线蕉超级流畅 | 成人午夜在线播放| 精品久久久久久久久久久久久久久久久| 亚洲综合精品自拍| 日本久久一区二区| 亚洲欧美日本韩国| 99在线视频精品| ...av二区三区久久精品| 粉嫩欧美一区二区三区高清影视| 日韩视频免费观看高清完整版| 丝瓜av网站精品一区二区| 在线中文字幕不卡| 亚洲一区二区三区在线看| 色哟哟亚洲精品| 一区二区三区在线高清| 一本大道久久a久久精二百| 亚洲人成网站影音先锋播放| 国产91丝袜在线播放0| 日本一区二区三区视频视频| 国产精品夜夜嗨| 国产农村妇女精品| 大胆亚洲人体视频| 自拍偷在线精品自拍偷无码专区| 色综合天天综合网天天看片| 亚洲欧美另类小说| 欧美性猛交xxxx乱大交退制版| 亚洲精品久久嫩草网站秘色| 欧美亚洲国产一区在线观看网站 | 欧美精品一区男女天堂| 国产精品主播直播| 中文字幕在线观看一区| 91福利在线看| 亚洲18女电影在线观看| 精品久久国产97色综合| 国产成人精品1024| 亚洲欧美色综合| 51精品国自产在线| 国产老肥熟一区二区三区| 日韩一区欧美小说|