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);

浙公網安備 33010602011771號