在UWP项目中引用本机C ++ dll

时间:2018-11-18 06:49:01

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

我有一个C ++ dll,我想在我正在从事的UWP项目中使用。我需要一些助手来实现这一目标。

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

  

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

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