【问题标题】:Reference native c++ dll in UWP project在 UWP 项目中引用原生 c++ dll
【发布时间】:2019-04-20 20:45:10
【问题描述】:

我有一个 c++ dll,我想在我正在处理的 UWP 项目中使用它。我需要一些助手来了解如何实现这一目标。

【问题讨论】:

标签: c# c++ dll uwp win-universal-app


【解决方案1】:

C++ 没有“引用 DLL”的概念。使用它们所需要做的就是确保在构建应用程序时将它们复制到可执行文件旁边。如果您使用的是 Visual Studio C# 项目 (.csproj),请将其添加为“内容”类型:

<ItemGroup Condition="'$(Platform)' == 'x86'">
  <Content Include="$(ProjectDir)MyDLL\x86\MyDLL.dll">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>
<ItemGroup Condition="'$(Platform)' == 'x64'">
  <Content Include="$(ProjectDir)MyDLL\x64\MyDLL.dll">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

一旦你有了这个设置,这只是一个 P/Invoking 的问题,例如:

[DllImport("MyDLL.dll")]
void DoStuff();

【讨论】:

  • "C++ 没有“引用 DLL”的概念。" - 无法正确读取。你是说C#吗?此外,仅在 UWP 应用旁边复制本机 dll 并不意味着它将通过 Bite's answer 中提到的 UWP 沙盒
  • 只要用UWP SDK编译DLL就可以通过认证。不,我不是指 C#,因为您可以从项目中引用 C# 程序集。
【解决方案2】:

通用 Windows 应用程序在受限的运行时环境中运行,因此您不能像在经典 Windows 桌面应用程序中那样使用任何本机 DLL。如果你有 DLL 的源代码,你可以移植代码以便它在 UWP 上运行。首先更改一些项目设置和项目文件元数据,以将项目标识为 UWP 项目。您需要使用启用 C++/CX 的 /ZW 选项编译库代码。由于与该环境相关的更严格的控制,某些 API 调用在 UWP 应用中是不允许的。请参阅 UWP 应用的 Win32 和 COM API。

如果您的本机 DLL 使用 __declspec(dllexport) 公开函数,那么您可以按照 Using a Win32 DLL in a UWP App 上的过程进行操作。

【讨论】:

    猜你喜欢
    • 2017-11-09
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    相关资源
    最近更新 更多