日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

VS2013建立C++ dll库文件

發布時間:2024/9/21 c/c++ 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VS2013建立C++ dll库文件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DLL是一個包含可由多個程序同時使用的代碼和數據的庫,DLL不是可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬于其可執行代碼的函數。函數的可執行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數。本文介紹了使用VS2013和C++進行動態庫的編寫,一方面C++運行速度之快大家有目共睹,另一方面,好多技術都是基于C++,如OPENCV ,若是用C++混合編寫比其它語言較為容易,使用C++建立動態庫公其他語言使用是相當劃算的。

工具/原料

  • VS2013

方法/步驟

  • 建立一個C++的Win32DLL,這里要注意選擇"Export symbols"導出符號。點擊完成。?如下圖所示:

  • 由于項目的名稱是"TestCPPDLL",因此,會自動生成TestCPPDLL.h和TestCPPDLL.cpp兩個文件,.h文件是要導出內容的聲明文件,為了能清楚的說明問題,我們將TestCPPDLL.h和TestCPPDLL.cpp兩個文件中的所有內容都刪除,然后在TestCPPDLL.h中添加如下內容:

  • 第一行代碼中定義了一個名為"TESTCPPDLL_API"的宏,該宏對應的內容是"__declspec(dllexport)"意思是將后面修飾的內容定義為DLL中要導出的內容。當然你也可以不使用這個宏,可以直接將"__declspec(dllexport)"寫在要導出的函數前面。

    第二行中的"EXTERN_C",是在"winnt.h"中定義的宏,在函數前面添加"EXTERN_C"等同于在函數前面添加extern?"C",意思是該函數在編譯和連接時使用C語言的方式,以保證函數名字不變。

    第二行的代碼是一個函數的聲明,說明該函數可以被模塊外部調用,其定義實現在TestCPPDLL.cpp中,TestCPPDLL.cpp的代碼如下所示:

  • 第三步:

    在編譯C++DLL之前,需要做以下配置,在項目屬性對話框中選擇"C/C++"|"Advanced",將Compile AS 選項的值改為"C++"。然后確定,并編譯。

  • 生成的DLL文件如下圖所示:

  • 第四步:

    首先,添加一個C#的應用程序,如果要在C#中調用C++的DLL文件,先要在C#的類中添加一個靜態方法,并且使用DllImportAttribute對該方法進行修飾,代碼如下所示:

  • DllImport中的第一個參數是指明DLL文件的位置,第二個參數"EntryPoint"用來指明對應的C/C++中的函數名稱是什么。"extern"關鍵字表明該處聲明的這個Add方法是一個外部調用。

    該方法聲明完畢之后,就可以像調用一個普通的靜態方法一樣去使用了。

    下面是示例程序:

  • 8

    然后運行該C#程序,其結果如下圖所示:

  • 總結

    以上是生活随笔為你收集整理的VS2013建立C++ dll库文件的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。