簡體   English   中英

從C#加載C ++ Windows運行時組件時發生異常

[英]Exception when loading C++ Windows Runtime Component from C#

我遇到一個問題,其中我的UWP應用程序使用C#,但是它利用了同一解決方案中的Windows運行時組件C ++ Dll。 當我在Debug中運行我的應用程序時,我看不到任何問題。 但是,當我在Release(x86)中運行時,出現以下異常(在VS debbuger中發生):

The specified module could not be found. (Exception from HRESULT: 0x8007007E
at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
   at CppFunction()
   at CsharpFucntion()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()

我的C ++組件確實與oppenssl鏈接(我是從microsoft github頁面手動構建的)。 我已經嘗試重建openssl組件,只是為了查看是否是問題所在,但這沒有幫助。

我還驗證了bin \\ x86 \\ Release \\ AppX文件夾中是否存在DLL和WINMD文件

經過幾天的探索,我終於找到了問題所在。 我們的團隊擁有多個正在構建的UWP應用程序,並且我們擁有一些通用的解決方案,可以構建供所有應用程序使用的DLL。

常見的項目之一是構建非Windows Runtime C ++ DLL(Windows Universal)。 在我的解決方案的C ++ Windows運行時組件中,我們靜態鏈接到在構建提到的DLL時創建的.lib文件,然后在打包應用程序時,我們將手動包含DLL。

由於某種原因,該方法似乎在大多數目標中都可以正常工作,但x86 / Release目標除外。

解決方案:創建一個包含來自公共DLL的所有代碼文件的靜態庫項目,然后鏈接到新的靜態庫。

暫無
暫無

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

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