[英]Calling a c# .dll from native visual c++ code
我正在使用的系統包括:
應用程序調用第一個dll,第一個dll調用與第二個dll不同的方法。
為了使第一個dll能夠查看和調用C#代碼,我遵循了本指南: http : //support.microsoft.com/kb/828736
唯一的不同是,我不使用/ clr:OldSyntax進行編譯,如果我這樣做了,則更改其他相關的編譯選項會使第一個dll從應用程序錯誤地加載。
一切都能順利編譯; 整個安裝程序最初甚至還可以正常工作,但是在兩個dll中完全開發完我的代碼后,我現在在應用程序中遇到錯誤。 錯誤是:
運行時錯誤'-2147417848(80010108)':
自動化錯誤
調用的對象已與其客戶端斷開連接。
並且在第一個dll中執行以下行時發生:
MyManagedInterfacePtr ptrName(__uuidof(MyManagedClass));
我嘗試復制完全正常的設置,但沒有成功。
關於我如何成功做到這一點的任何想法? 或替代地使兩個dll一起工作的其他方法?
提前致謝!
這是與RPC相關的低級COM錯誤。 這通常在進程外服務器中使用,但這聽起來不像您的設置。 如果您從另一個線程在COM接口上進行調用,也將使用它。 原因之一可能是,創建COM對象的線程被允許退出,調用CoUninitialize並拆除COM對象。 從另一個線程進行的后續調用將生成此錯誤。 錯誤地引用引用(經常調用Release)也可能導致這種情況。
通過仔細跟蹤哪些線程創建一個COM對象以及它們可以存活多長時間來解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.