舉例:// netcontrol.cs
using system;
using system.collections.generic;
using system.text;
using system.runtime.interopservices; // 這句必不可少
namespace netcontrol }
1.dll函式的匯入:
關鍵字:unmanaged code ; managed code;
具體應用類:system.runtime.interopservices
具體使用方法:
[dllimport("muparser.dll", entrypoint = "mupsetexpr", setlasterror = true, charset = charset.ansi, exactspelling = true, callingconvention = callingconvention.stdcall)]
public static extern void mupsetexpr(void* parser_handle, stringbuilder a_szexpr);
注意點:entrypoint 同函式名 charset 注意 不要輕易使用 uncode.
函式引數 要使用指標時 應該使用 unsafe
2.函式指標的使用:
關鍵字:delegate
具體使用方法:
c++: typedef double (*fun_type1)(double);
c#:public delegate double fun_type1(double);
注意點:c#使用委託 方法,實現函式指標,使用時 c++中的指標去掉
引數定義很c++一樣
3.定義指標值
關鍵字:fixed
具體使用說明:主要是想返回指標位址,c#中好像不支援 &(可能不準確)
直接給指標賦值也不行
example:
public double* addvariable() }
說明:相關這個指標變數都要在 fixed 裡面
4.關於c++函式引數是 char* 的操作
關鍵字:stringbuider
具體使用說明:c++中引數char*操作是 乙個位元組乙個位元組讀取的,
c#中的string 是 兩個位元組讀取的 所以不能用
所以只用stringbuilder替代
現在還沒有找到更好的方法,如果有的話告之
5.關於dll的匯入
如果c++中dll 不是元件形式(或者com),那麼不能直接通過.net的reference 直接應用
我的解決方法:
應用平台:.net website
方法: 建立classlibrary 將要應用的dll放在bin下 然後編譯工程 使用新生成的dll 就可以了
6.關於c#中使用指標:
關鍵字:unsafe
使用方法:在需要使用指標的地方 加 unsafe
c 呼叫c 的dll 例項
一 使用 clr編譯mfc可執行檔案或規則c dll函式.1 開啟 專案屬性 對話方塊,方法是右鍵單擊 解決方案資源管理器 中的專案並選擇 屬性 2 展開 配置屬性 旁邊的節點並選擇 常規 在右側窗格中的 專案預設值 下,將 公共語言執行庫支援 設定為 公共語言執行庫支援 clr 3 在相同的窗格中...
C 呼叫C 寫的DLL
方法有不少,這裡記錄其中的乙個方法。編譯 呼叫通過了的。期間遇到的問題是c 呼叫時傳遞string型別的引數和返回值會報錯。targetinvocationexception異常,值不在範圍內,記憶體不可訪問等等。解決方法是 在c 的dll中將string型別的引數返回值改為lptstr型別。在c ...
C 呼叫C 生成的dll
本文將介紹c 中通過dll來呼叫c 首先建立c 的 類庫 工程cshapedll。然後輸入如下 csharp view plain copy c 通過dll呼叫c by morewindows using system using system.collections.generic using s...