【发布时间】:2019-04-20 20:45:10
【问题描述】:
我有一个 c++ dll,我想在我正在处理的 UWP 项目中使用它。我需要一些助手来了解如何实现这一目标。
【问题讨论】:
-
^ 这个问题与这个问题无关。
标签: c# c++ dll uwp win-universal-app
我有一个 c++ dll,我想在我正在处理的 UWP 项目中使用它。我需要一些助手来了解如何实现这一目标。
【问题讨论】:
标签: c# c++ dll uwp win-universal-app
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 沙盒
通用 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 上的过程进行操作。
【讨论】: