Re: [問題] C++ 程式呼叫C# dll library?

看板C_and_CPP作者 (我愛阿蓉)時間12年前 (2011/11/24 17:54), 編輯推噓1(1014)
留言15則, 7人參與, 最新討論串2/2 (看更多)
大家好.. 遵照推文p大的連結照著做 http://support.microsoft.com/kb/828736 最終失敗 跑到 ICalculatorPtr pICalc(__uuidof(ManagedClass)); 時 跳出exception An unhandled exception of type 'System.Runtime.InteropServices.SEHException' occurred in CPPClientConsole.exe Additional information: 外部元件傳回例外狀況。 死在這內部的function explicit _com_ptr_t(const CLSID& clsid, IUnknown* pOuter = NULL, DWORD dwClsContext = CLSCTX_ALL) : m_pInterface(NULL) { HRESULT hr = CreateInstance(clsid, pOuter, dwClsContext); if (FAILED(hr) && (hr != E_NOINTERFACE)) { _com_issue_error(hr); } } 我用VS 2010 and 2008 兩個平台都試, 一樣都會壞掉... 我目前是想先從一般平台 寫Application 測試這可否成功 若可以 再考慮driver這邊的問題 我driver完全不熟...只是遵照SOP去build一隻user mode driver. 所有設定也不像VS 有 強大IDE可以設定 遵照這網頁 sn.exe k MyKeyFile.SNK RegAsm.exe ManagedDLL.dll /tlb:ManagedDLL.tlb / (/ clr:oldSyntax) 這3個步驟就不知如何克服在不熟悉的driver平台作... 而且現在情況有點怪 我C#的dll是微軟 build好的dll我沒有原始碼也沒辦法去重build 所以文中所提到的tlb 檔案 我是無法匯出 會想再driver層呼叫C#的dll是因為 微軟的這DLL做的事情 我們沒辦法自己寫(不曉得實作邏輯) 有人就出意見 說在driver呼叫C# dll應該可以吧? 所以正在survey..... 想請問各位目前卡的地方是否是哪裡設定上有遺漏 謝謝 ※ 引述《QQ29 (我愛阿蓉)》之銘言: : 大家好 : 請問一個問題 : 關於C++ 寫的程式 可否呼叫C# dll裡面的function. : 我之前有稍微用過C# 程式 呼叫C++ 寫的dll : 流程大概是要把C++包成一個COM dll C#程式再用奇怪語法去呼叫 : 好像叫做Interop : 但反過來 : 我不知道有沒有可行的機會 : 也不知道專有名詞叫什麼 : 可否請有經驗的版友給點建議 : 讓我有個survey的方向 : 我是希望不可行啦 : 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.64.222 ※ 編輯: QQ29 來自: 219.87.64.222 (11/24 17:59)

11/24 22:22, , 1F
用類似rpc的作法以socket來作一個橋樑呢 = =?
11/24 22:22, 1F

11/24 22:23, , 2F
至少這樣那個橋樑的dll是你的
11/24 22:23, 2F

11/24 22:27, , 3F
抱歉 ... 前文我現在才看到
11/24 22:27, 3F

11/24 23:32, , 4F
看看有沒有人用過吧,微軟的COM照著文件做不能動還滿常發生的
11/24 23:32, 4F

11/25 00:43, , 5F
其實我一直很想理解 為什麼c++能呼叫C#的東西,managed code
11/25 00:43, 5F

11/25 00:44, , 6F
不是都跑在vm上嗎 原理很想知道..但又不知道哪裡可以得知
11/25 00:44, 6F

11/25 00:44, , 7F
像是有人問我C# dll和C++ dll有啥差別...我直覺是差很大
11/25 00:44, 7F

11/25 00:44, , 8F
但完全不會解釋...真的很慚愧
11/25 00:44, 8F

11/25 00:45, , 9F
語言只是前端的東西, 最後從語法GEN出來的東西才是能
11/25 00:45, 9F

11/25 00:45, , 10F
不能結合的關鍵
11/25 00:45, 10F

11/25 00:56, , 11F
我連直覺都沒有...
11/25 00:56, 11F

11/25 01:01, , 12F
直覺是無腦覺得拉 完全不懂原理阿
11/25 01:01, 12F

11/25 10:58, , 13F
因為COM會在中間充當兩邊溝通的橋樑
11/25 10:58, 13F

11/26 17:02, , 14F
那假如fork一個.net的process,在從process中load這個dll
11/26 17:02, 14F

11/26 17:03, , 15F
這種方式符合你的需求嗎?
11/26 17:03, 15F
文章代碼(AID): #1EpXG-Zi (C_and_CPP)
文章代碼(AID): #1EpXG-Zi (C_and_CPP)