C 呼叫C 生成的類(通過CLR類庫實現)

2021-06-20 02:15:19 字數 959 閱讀 5806

最近組裡的專案需要利用c#呼叫c++生成的dll,在網上反覆查詢資料最後終於實現了,這個過程,現將大致過程整理總結如下。

建立起c#與c++之間的橋梁便是vs中我們不常用的那個clr類庫,我這次用的是其他組編譯好的c++dll動態鏈結庫,然後建立自己的clr類庫工程,將已給的c++標頭檔案以及dll跟相應的lib檔案拷貝的工程目錄下待用。專案建立完成以後,在標頭檔案處新增包含檔案即

#include"mydll.h"
其中mydll.h即為已經編譯好的動態鏈結庫的標頭檔案,並將其新增到工程當中,自動生成的工作在標頭檔案會有這樣一行**
namespace mydlltestclr  

在我寫**的時候有這個命名空間後續會有很多問題,所以索性我就將這個命名空間刪掉,直接就定義乙個類。這個還有乙個問題需要注意,就是給定的c++的標頭檔案,定義類的時候不能要按如下方式定義,否則在編譯連線的過程中clr類庫工程只能生成dll檔案而沒有lib檔案,定義方式如下:

extern 「c」 _declspec(dllexport) class cmydll

然後在標頭檔案中定義全域性指標變數

cmydll * mydll;

然後在建構函式中初始化全域性變數

mydlltestclr()

並且在析構函式中刪除該變數,然後就可以任意呼叫該類中的任意函式了。最後將編譯生成的dll與lib檔案以及原始的c++生成的dll與lib檔案一起拷貝到c#工程中就可以直接在c#中呼叫dll中的任何乙個函式了,這樣便實現了c#呼叫c++類的過程,其中具體操作過程可參考連線

a>

,這篇文章詳細介紹了如何編寫**,這裡只是根據自己的理解做乙個筆記以便以後使用使查詢,並且也希望能夠給你帶來一點點的幫助,僅供參考!

C 呼叫C 類庫生成的dll

新建專案 visual c 類庫 net framework 在 bin debug xx.dll 新建專案 visual c 空專案 右鍵屬性 常規 專案預設值 公共語言執行時支援 clr 將生成的dll檔案拷貝到debug目錄下 如果是release則拷貝到release目錄下 原始檔 新增 新...

C 呼叫C 類庫2

前文 為了測試c 呼叫的c 類庫需要呼叫其他c 類庫的情況 也不知道是不是應該這樣形容,如下圖,目的是呼叫cameracontrol.devices,但是其需要呼叫下面兩個庫 對前乙個專案進行一些修改 1.解決方案 新增 新建專案 類庫 net framework 新增csharptestdll2 ...

使用C 呼叫C 類庫

1.使用c 編寫乙個動態庫 dll 2.將dll內函式匯出 3.使用c 進行呼叫 4.方法呼叫 5.在vs進行除錯 1.1建立專案 x64 在vs2017中新建 專案 visual c windows桌面 動態鏈結庫 在專案屬性中 常規中選擇無公共語言支援,即不建立託管c 類庫 1.2新增類和方法 ...