簡體   English   中英

從Windows應用商店應用項目引用C ++ WinRT組件

[英]Referencing C++ WinRT component from a Windows Store app project

我有一個Windows應用商店應用項目。 在這個項目中,我想引用一個用C ++編寫的Windows運行時組件。 該組件可用作DLL + WinMD組合。 但是我無法弄清楚如何做到這一點。 我已經嘗試從應用程序VS項目添加文件引用到DLL和WinMD文件,但我收到一個錯誤,說無法添加DLL。 然后我嘗試將它作為二進制文件添加到輸出目錄,但仍然沒有運氣。

我沒有這個WinRT組件的來源。 我知道如果我有WinRT組件的VS項目,那么我可以簡單地從我的應用程序項目添加一個引用到WinRT組件項目,這一切都正常。 但是在松散的WinMD / DLL文件的情況下,它不起作用。

我怎樣才能做到這一點?

用C#編寫的WinRT組件只生成一個文件,winmd文件包含元數據和組件的實現。 此外,相同的文件可用於所有體系結構(x86,x64和ARM)。

但是,用C ++編寫的WinRT組件會生成兩個文件 - 包含元數據的winmd文件和包含實現的DLL文件。 此外,DLL文件是每個體系結構分開的(x86,x64和ARM各一個)。 正是出於這個原因:

  • 添加對winmd文件的引用沒有意義(因為實現在DLL中)
  • 添加對單個DLL文件的引用沒有意義,根據您的項目配置/體系結構,需要不同的DLL

當您將應用程序VS項目中的引用添加到組件VS項目時,VS項目系統會為您處理上述所有復雜性。 但是,如果沒有組件的源/項目,則可以使用Extension SDK機制。 如果將所有三種體系結構的DLL + WinMD組合打包為Extension SDK,則VS能夠將正確的配置/體系結構特定組件正確添加到app輸出中。

有關C ++ WinRT Extension SDK的真實示例,請查看Bing Maps SDK 安裝SDK,然后轉到以下文件夾以查看Extension SDK的結構:

C:\\ Users \\\\ AppData \\ Local \\ Microsoft SDKs \\ Windows \\ v8.1 \\ ExtensionSDKs \\ Bing.Maps.Xaml \\ 1.313.0825.0

請注意,您不一定需要在要使用項目的每台計算機上安裝Extension SDK。 目前,ESDK是一個機器范圍的實體(與NuGet不同),但它們可以使用此處說明按項目制作。

暫無
暫無

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

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