簡體   English   中英

使用來自C#的托管C ++ dll

[英]Using managed C++ dll from C#

我已經使用托管C ++創建了一個dll。 現在,我正在嘗試從C#使用它。 我已將對象添加到項目引用中。 對象瀏覽器正確顯示dll中的對象,對象瀏覽器中dll的路徑與實際路徑相對應。

但是,當我運行C#程序時,它抱怨:

未處理的異常:System.IO.FileNotFoundException:找不到指定的模塊。 (來自HRESULT的異常:0x8007007E)

知道還有什么要做的嗎?

謝謝。

我認為托管C ++程序集缺少其他程序集或dll的引用。

您的托管C ++程序集是否還有其他依賴性,包括非托管dll? 如果引用的程序集無法加載依賴項,則會在運行時看到此錯誤。

您是否正在未安裝VS的計算機上運行發行版中的應用程序?

我之所以只問是因為我在這里遇到了類似的問題: 混合模式庫和CRT依賴關系-幫助

如果向下滾動到我的答案,您會看到我所做的工作對我有所幫助。

檢查c ++程序集是否與c#程序位於同一文件夾中。 如果將“復制本地”屬性設置為true(應引用您的c#應用程序中的c ++ dll),則應自動復制它。

如果存在c ++ dll,則最可能的問題是c ++ dll依賴於另一個找不到的非托管dll(即c#不會將它們復制到您的應用程序文件夾,因為它不知道非托管引用)。 您可以在c ++ dll上使用DependencyWalker來檢查缺少的依賴項。

另一個可能的原因可能是您的MSVC運行時dll有問題。 查看DependencyWalker是否抱怨缺少MSVCR * .dll,MSVCP * .dll等文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM