[問題] Callback 函式 (C# 呼叫 C++ dll)

看板C_Sharp作者 (serene ice)時間16年前 (2009/09/15 11:44), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
dll 部份  ̄ ̄ ̄ ̄ int __stdcall SKQuoteLib_AttachConnectionCallBack( [in]long lCallBack ) // lCallBack 帶入 Call back 的函式位址。當狀況發生時即可呼叫此函式進行處理 C# 部份  ̄ ̄ ̄ ̄ [DllImport("SKQuoteLib.dll")] extern static int SKQuoteLib_AttachConnectionCallBack( int lCallBack );  ̄ ̄ static void CBFunc_AttachConnection( int nKind, int nCode ) { Console.WriteLine("haha"); } static void Main(string[] args) { SKQuoteLib_AttachConnectionCallBack( 這裡 ); }  ̄ ̄ 問題  ̄ ̄ 所以我現在需要丟入 CBFunc_AttachConnection 的 Function Pointer 一定要透過 delegate 來做嗎? 還是有什麼方法可以直接取得? 我看到的 C++ 範例程式碼 直接丟入 (long)CBFunc_AttachConnection 就行了 Orz 另外就是 C++ 的 long 是 32-bit C# 的 long 是 64-bit 所以我在 dllimport 那邊 lCallBack 是用 int 型態 這樣 OK 嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.91.117 ※ 編輯: percyy 來自: 114.32.91.117 (09/15 11:45)

09/15 16:42, , 1F
OK的,要以符合c++為優先
09/15 16:42, 1F

09/15 20:57, , 2F
所以問題在 取得func ptr 跟 把它轉成int
09/15 20:57, 2F
文章代碼(AID): #1AhmssZ7 (C_Sharp)