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