天天看點

C#調用C++動态庫

1、若C#調用VC的動态庫,而dll中使用了MFC則須将MFC靜态連結到dll中。

2、C#調用C++的動态庫有三種方法:COM元件、托管代碼、非托管代碼。

  COM元件需用戶端注冊,若客戶無管理者權限則無法使用;

  托管代碼可以将dll中的類導出,但需要寫托管代碼,添加工作量且代碼看上去有點**;

  非托管代碼不能導出dll中的類,隻能導出函數,但好處是dll比較正統,可以給C/C++/C#使用。

3、C#調用C++動态庫時需留意參數傳遞問題,dll中的接口字元串類型最好用char*。

4、傳入參數string對應接口中的char*, out 參數用StringBuilder, 注意使用unsafe。若在其它類中使用導出函數,需使用public關鍵字。

[DllImport(@"HIDUSBLib.dll", EntryPoint = "Receive")]
public extern unsafe static bool Receive(string devName,
                                                            [MarshalAs(UnmanagedType.LPStr)]StringBuilder buf,
                                                            int bufLen,
                                                            int* nRecvLen,
                                                            int timeout);      

轉載于:https://www.cnblogs.com/mymeng_feng/p/5091751.html