看板 C_and_CPP 關於我們 聯絡資訊
大家好.. 遵照推文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)
sunneo:用類似rpc的作法以socket來作一個橋樑呢 = =? 11/24 22:22
sunneo:至少這樣那個橋樑的dll是你的 11/24 22:23
sunneo:抱歉 ... 前文我現在才看到 11/24 22:27
priv:看看有沒有人用過吧,微軟的COM照著文件做不能動還滿常發生的 11/24 23:32
QQ29:其實我一直很想理解 為什麼c++能呼叫C#的東西,managed code 11/25 00:43
QQ29:不是都跑在vm上嗎 原理很想知道..但又不知道哪裡可以得知 11/25 00:44
QQ29:像是有人問我C# dll和C++ dll有啥差別...我直覺是差很大 11/25 00:44
QQ29:但完全不會解釋...真的很慚愧 11/25 00:44
loveme00835:語言只是前端的東西, 最後從語法GEN出來的東西才是能 11/25 00:45
loveme00835:不能結合的關鍵 11/25 00:45
ericinttu:我連直覺都沒有... 11/25 00:56
QQ29:直覺是無腦覺得拉 完全不懂原理阿 11/25 01:01
Chikei:因為COM會在中間充當兩邊溝通的橋樑 11/25 10:58
dk3208:那假如fork一個.net的process,在從process中load這個dll 11/26 17:02
dk3208:這種方式符合你的需求嗎? 11/26 17:03