在C 中呼叫C 寫的DLL

2021-04-12 16:01:22 字數 1102 閱讀 2576

這裡兩個問題,一是如何將c++編譯成dll,二是在c++和c#中呼叫這個dll

1,寫c++的dll,參照以下link,它說的是c++中的dll呼叫,所以肯定成功

2,寫乙個c#,呼叫上面寫的dll

2.1將以上的dll拷貝到debug/release目錄,然後寫c#程式如下:

using system;

using system.collections.generic;

using system.text;

using system.runtime.interopservices;

namespace mycsharpexecrefsdll

public class mywin32

}呼叫的時候總是說沒有這個入口。

unable to find entry point named "add" in dll "mathfuncdll1.dll"

根據網友lucrefy(luluboy)的介紹使用depends.exe 察看,也有這個函式但就是找不到。再根據他的介紹,使用比較老的external 而非class的辦法,成功。

c++標頭檔案修改如下:

namespace mathfuncs;}

c#程式如下:

using system;

using system.collections.generic;

using system.text;

using system.runtime.interopservices;

namespace mycsharpexecrefsdll

public class mywin32}}

3,參考頁面

4,其他參考頁面,以下頁面詳細討論了這個問題。

C 呼叫C 寫的DLL

方法有不少,這裡記錄其中的乙個方法。編譯 呼叫通過了的。期間遇到的問題是c 呼叫時傳遞string型別的引數和返回值會報錯。targetinvocationexception異常,值不在範圍內,記憶體不可訪問等等。解決方法是 在c 的dll中將string型別的引數返回值改為lptstr型別。在c ...

C 呼叫Delphi寫的DLL

在c 中可以這樣呼叫 呼叫 這裡需要注意的是要外傳的pchar型別引數,在c 中對應使用stringbuilder,如果使用string沒有任何資訊傳出,如果使用ref string形式,則會出現記憶體錯誤。在c 中可以這樣呼叫 呼叫 經過測試 delphi中integer的引數使用c 中的int即...

C 中呼叫其他語言寫的DLL

摘要 本文主要講述如何在c 中逐步實現載入自己用 c 語言編寫的動態鏈結庫,以及在匯入時如何進行 c 和 c 語言的資料型別匹配。一 發生的背景 在開發新專案中使用了新的語言開發 c 和新的技術方案 web service,但是在新專案中,一些舊的模組需要繼續使用,一般是採用 c 或 c 或 del...