在 C++ WinRT UWP 应用程序中使用现有静态库

Use existing Static library in C++ WinRT UWP app

我有一个现有的第三方静态库,我想在我的项目 C++WinRT UWP 应用中使用它。我可以这样做吗?

我已阅读documentation。但这让我很困惑。

关于“在 UWP 应用程序中使用本机 C++ 静态库”的文档讨论什么是本机 C++ 库?

此外,我没有这个库的源代码。

UWP 的主要限制是库:

(a) 必须使用支持在 WINAPI_PARTITION_APP

中使用的 Win32 导入子集

(b) 它需要使用 VS 2015 Update 3 或更高版本构建才能 'binary compatible' 使用用于 UWP 的现代 Visual C++ 工具。

(c)“AppContainer”安全上下文可能不支持静态库使用的某些 API(即,它们可能会以代码无法妥善处理的方式失败)。

您还应该使用 /NODEFAULTLIB:kernel32.lib 来避免静态库强制导入 non-supported API。 “WindowsApp.lib”伞形库提供了所有受支持的东西。

很有可能,您需要对构建的静态库进行一些修改才能真正 link 成功并最终通过 WACK。

I have an existing third-party static library that I want to use in my project C++WinRT UWP app. Can I do that? Also, I do not have the source code for this library.

是的。您不需要源代码即可使用库。

您可以只使用提供的二进制库(源的最终输出)。它可以作为 a static or dynamic library 包含在最终输出二进制文件中。

How to include that?

参考文档中的某些部分可能对您有帮助third party static library

To use a native C++ static library in a UWP project
In the project properties for the UWP project, 

choose Configuration Properties > Linker > Input in the left pane. 

In the right pane, add the path to the library in the Additional Dependencies property. 

For example, for a library in the project that places 
its output in <SolutionFolder>\Debug\MyNativeLibrary\MyNativeLibrary.lib, 
add the relative path Debug\MyNativeLibrary\MyNativeLibrary.lib.

Add a include statement to reference the header file to your pch.h file (if present), 
or in any .cpp file as needed, and start adding code that uses the library.

C++

Copy
#include "..\MyNativeLibrary\MyNativeLibrary.h"