[英]Using managed C++ dll from C#
我已經使用托管C ++創建了一個dll。 現在,我正在嘗試從C#使用它。 我已將對象添加到項目引用中。 對象瀏覽器正確顯示dll中的對象,對象瀏覽器中dll的路徑與實際路徑相對應。
但是,當我運行C#程序時,它抱怨:
未處理的異常:System.IO.FileNotFoundException:找不到指定的模塊。 (來自HRESULT的異常:0x8007007E)
知道還有什么要做的嗎?
謝謝。
我認為托管C ++程序集缺少其他程序集或dll的引用。
您的托管C ++程序集是否還有其他依賴性,包括非托管dll? 如果引用的程序集無法加載依賴項,則會在運行時看到此錯誤。
檢查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.