回覆列表
-
1 # 迴風口
-
2 # 單獨儲存325
c++編寫的含有類定義的dll不能直接在c#中呼叫,如果要呼叫類中方法,可以找到對應的函式入口地址,透過P/Invoke方式可以呼叫。 但是如果要想建立這個類的物件,就需要建立一個託管專案,c++/CLR,在裡面需要將非託管的類轉換成託管類。然後使用的時候直接呼叫託管類的dll就行。
-
3 # 使用者6602652349876
可以不註冊,但是呼叫方式就不一樣了。
註冊了的你可以使用ClassID或者名字就可以建立com元件,沒註冊那就必須知道dll檔案所在位置,並且自己從dll匯出的函式來獲取了。
-
4 # 使用者3478480302384494
首先,C#是可以呼叫C寫的DLL的,引用時VS會自動將這個DLL轉換為託管程式。
但是你這個DLL是去呼叫別的C庫就會出問題,因為別的庫依然是非託管的。
C++寫的編譯後的dll不是託管程式碼,當然不能新增引用了。要呼叫非託管的dll要先新增using System.Runtime.InteropServices;引用然後在某個類里加入[DllImport("sms.dll", EntryPoint = "get_char", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern char get_char(char a); //dll裡的你要呼叫的函式(一些引數的型別要做一些改變比如 CString)接下去 在C#裡就可以用這個方法了。