作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題Re: [問題] C++ 程式呼叫C# dll library?
時間Thu Nov 24 17:54:03 2011
大家好..
遵照推文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