2017-10-12 100 views
0

我有一個C++庫,它具有在Windows運行時環境中使用它的功能。尋找.winmd路徑的靜態庫

我想用它作爲靜態庫。我以這種方式配置併成功構建它。我還能夠將其項目引用添加到我的用法中。

但是,當我試圖建立我要去的地方使用它的項目 - 我正在建立自己的錯誤:

pch.cpp : fatal error C1192: #using failed on 'D:..\mylib\mylib.winmd' 

爲什麼找.winmd文件?它生成.lib文件。我在這裏做錯了什麼?

+0

我們展示的代碼行靜態庫。 – xMRi

+0

.winmd文件是組件的類型庫。它扮演與普通庫的.h文件完全相同的角色,它包含由庫顯示的類型的聲明。 #using相當於#include。試圖把它變成一個靜態庫,嗯,應該是一個奇蹟或三個。我想你必須創建自己的工廠功能,現在是自動生成的。 *不要這樣做*是唯一的好建議。 –

+0

*「它具有在Windows運行環境中使用它的功能」* - 該庫具有哪些功能?據我所知,Windows運行時語言投影只能使用一個庫來作爲一個.winmd文件。 – IInspectable

回答

0

我必須在我的.cxproj文件中添加以下項目以供製作得到真實添加到我的UWP作爲的.lib文件

<Keyword>StaticLibrary</Keyword> 
<AppContainerApplication>true</AppContainerApplication> 
<ApplicationType>Windows Store</ApplicationType>   
<WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>  
<WindowsTargetPlatformMinVersion>10.0.10586.0 
</WindowsTargetPlatformMinVersion> 
<ApplicationTypeRevision>10.0</ApplicationTypeRevision>  
<Link> 
    <SubSystem>Console</SubSystem> 
    <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> 
    <GenerateWindowsMetadata>false</GenerateWindowsMetadata> 
</Link> 
-2

#using不是消耗靜態庫的正確方法。

  1. 包括標題,你需要

  2. 的的.lib文件添加到鏈接選項。或者(從我的角度來看更好)在源代碼中添加一個#pragma comment(lib,...)。 lib文件應該位於鏈接器搜索的路徑中。您可以在鏈接器設置中調整鏈接器的路徑。

如果您引用的.NET C++/CLR組件創建爲.DLL #using是正確的方法。

+0

我沒有使用庫中的任何東西。所以我認爲我現在不需要標題了。我只是從我的項目列表中添加了庫項目。 lib文件在目錄中。但爲什麼它一直在尋找.winmd。它應該查找.lib。 –

+0

Windows運行時與靜態庫或.NET無關。這個答案沒有解決這個問題。 – IInspectable