回覆列表
  • 1 # 迴風口

    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#裡就可以用這個方法了。

  • 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庫就會出問題,因為別的庫依然是非託管的。

  • 中秋節和大豐收的關聯?
  • 員工的四保包括哪四保?