這裡兩個問題,一是如何將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...