91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • 基于C#的Metro工程如何引用C++的動態庫——FIleNotFound解決辦法

基于C#的Metro工程如何引用C++的動態庫——FIleNotFound解決辦法

發布時間:2020-07-18 08:39:06 來源:網絡 閱讀:3104 作者:卡卡度 欄目:開發技術

    這是個折磨了我兩天的難題,每每在我感覺找到問題所在的時候,又總是差了那么一點兒揭開謎底。

    過程是這樣的:我有個C#寫的metro風格的工程,其中引用了C++的dll,我們知道C#是不能直接調用C++的類庫,所以需要封裝一個wrapper層,也就是個運行時組件(WinRT Component)。詳見這里:http://msdn.microsoft.com/en-us/library/windows/apps/hh541569(v=vs.110).aspx

    我在x86架構下編譯運行正常。隨后我希望能編譯個ARM版本,跑在Surface上面。并且,我需要將生成Component的工程從solution里移除,這樣,就相當于我只為別人提供一個wrapper層的dll和winmd文件,別人即可編寫自己的APP調用我的C++庫了。

    我把winRT Component工程移除,并且在configuration manager中將編譯target改為arm,此時需要在Project菜單中將winRT Component工程生成的winmd文件加入到reference中。我通過點擊Browse的方式找到winmd位置并添加。此時,編譯正常。但是問題來了:當我remote debug到Surface上的時候,一旦調用到wrapper層的接口,就會報出“FileNotFound,找不到指定模塊”的異常。

    開始我懷疑dll沒有加載成功,可是查看了APPx文件夾,里面是已經正確copy了dll的。并且如果再次向工程中添加一個dll時,會提示沖突,這說明dll已經加載進來了。

    經測試,如果再將winRT Component工程添加到solution,然后先移除原來已經添加的reference,再選擇“add reference —— 選擇solution--Projects”,然后勾選winRT Component工程,點擊OK。此時相當于從solution中添加了winRT Component工程的引用。這樣,遠程調試是沒有問題的。

    于是我對比了這兩次(一次成功,一次失敗)的manifest文件,發現成功的那次比失敗的多了這么一句:

  <Dependencies>

    <PackageDependency Name="Microsoft.VCLibs.110.00.Debug" MinVersion="11.0.50727.1" />

  </Dependencies>

也就是說因為沒有這個PackageDependency 才導致調試失敗,而缺少的是Microsoft.VCLibs.110.00.Debug,也就是說系統庫缺失!

隨后回到工程“add reference —— 選擇windows--Extensions——勾選Microsoft Visusl C++ Runtime Package”,確定,重新編譯。問題解決!

回頭分析了一下這個問題:問題雖小,一個勾選就能解決,但是查起來卻著實不易。主要是對C#比較陌生,而且Metro程序玩的太少。

http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/ed405c8c-c650-4c36-aaae-d81620de62c8/  這里有篇文章給了很大啟示,其中Rob的回答中說Microsoft.VCLibs.110.00.Debug這個庫是C++和JS工程需要的。如果你的工程是C++或JS的,那么VS會自動幫你加上這個庫,而C#的工程是不需要的,所以VS默認不會幫你加上(這也是我之前成功和失敗兩次manifest文件差別的原因)。由于我的APP是C#的,所以VS沒有幫我加這個庫,但是又由于我調用了C++的dll,所以必須要這個庫才可以調試,因此導致了這一錯誤。望以后碰到類似問題的同學能注意到這點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新丰县| 玉树县| 华蓥市| 阳东县| 银川市| 昂仁县| 民权县| 福清市| 宜春市| 潜江市| 芷江| 上高县| 富宁县| 东平县| 长泰县| 湘西| 漾濞| 施秉县| 台东市| 固镇县| 尤溪县| 福鼎市| 新巴尔虎右旗| 荔浦县| 武强县| 修水县| 体育| 裕民县| 邵阳县| 工布江达县| 徐汇区| 集安市| 福海县| 乐陵市| 巢湖市| 景洪市| 明水县| 泽普县| 丽水市| 曲靖市| 收藏|