Ссылка на родной c ++ dll в проекте UWP - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть c ++ dll, который я хочу использовать в проекте UWP, над которым я работаю. Мне нужен помощник, как этого добиться.

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Универсальные приложения Windows работают в среде с ограниченным временем выполнения, поэтому вы не можете просто использовать любую встроенную библиотеку DLL, как в классическом настольном приложении Windows. Если у вас есть исходный код для DLL, вы можете портировать код так, чтобы он работал на UWP. Вы начинаете с изменения нескольких параметров проекта и метаданных файла проекта, чтобы идентифицировать проект как проект UWP. Вам необходимо скомпилировать код библиотеки, используя параметр / ZW, который включает C ++ / CX. Некоторые вызовы API недопустимы в приложениях UWP из-за более строгих элементов управления, связанных с этой средой. См. Win32 и COM API для приложений UWP.

Если ваша нативная DLL предоставляет функции с использованием __declspec(dllexport), вы можете выполнить процедуру на Использование Win32 DLL в приложении UWP .

0 голосов
/ 19 ноября 2018

C ++ не имеет понятия "ссылки на библиотеки DLL".Все, что вам нужно сделать, чтобы использовать их, это убедиться, что они скопированы рядом с вашим исполняемым файлом при сборке приложения.Если вы используете проект Visual Studio C # (.csproj), добавьте его в него как «Content» типа:

<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();
...