2016-06-11 3 views
1

Я новичок в программировании на C++ на Универсальной платформе Windows, и у меня есть быстрый вопрос: я создал проект Статическая библиотека (Universal Windows) в Visual Studio 2015, но я не мог использовать эти классы Windows Runtime как Windows::UI::Core::CoreWindow в этом проекте.Как ссылаться на классы Windows Runtime в статической библиотеке?

Я думаю, мне нужно добавить директивы include или ссылки на библиотеки, но я не смог найти информацию об этом. Я попытался найти MSDN, но только нашел две страницы, на которых были указаны два заголовка для пространства имен default и Collections.

Кто-нибудь знает, как ссылаться на классы Windows Runtime в Статической библиотеке?

+0

Добавили ли вы ссылку на файл Windows.md в проекте? Какая ошибка вы получаете.Я использую статическую библиотеку в приложении UWP, и она работает, но некоторые параметры должны применяться. Дайте мне знать, какая ошибка вы получите – ZivS

+0

Нет. У меня не было файла Windows.md в моем проекте. Где я могу найти информацию об этом? Ошибка, которую я получил, просто состоит в том, что эти пространства имен и классы не определены. –

+0

Что я хочу сделать, так это создать статическую библиотеку некоторого кода OpenGLES, и для создания поверхностного объекта требуется Windows :: UI :: Core :: CoreWindow, но не нужно создавать окно. Итак, это похоже на решение OpengGLES2 Application (Android, iOS, Windows Universal), перемещающее код OpenGLES из App.cpp в xxx.WindowsUniversal.Application в библиотеку. –

ответ

2

Вам необходимо создать проект с параметром/ZW, чтобы потребляя время выполнения расширения для Windows в статической библиотеке UWP:

  1. правой кнопкой мыши на проекте из проводника Solution
  2. Нажмите кнопку Свойства
  3. Выберите C/C++ -> Общие
  4. Установите "Потреблять среды выполнения Windows Extension" "Да (/ ZW)"
  5. Нажмите OK

После применения этой опции ссылки на Windows Runtime Extensions отображаются под ссылками на проект, и вы можете использовать классы времени выполнения Windows.

Однако, вы можете увидеть предупреждение компоновщика при построении библиотеки:

Debug \ pch.obj: предупреждение LNK4264: архивирование объектный файл, скомпилированный с /ZW в статическую библиотеку; обратите внимание, что при авторизации среды выполнения Windows типов не рекомендуется связать со статической библиотекой, которая содержит метаданные среды выполнения Windows, если вы используете линкер выпустила до того VS 2015 Update 2

Я тестировал сценарий, и она работала однако, в режиме отладки, я не уверен, что это лучший способ, поскольку опция/ZW отключена по умолчанию в отличие от других типов проектов UWP.

MSDN:

Вы можете использовать статическую библиотеку Уроженец C++ в UWP проекте, но некоторые ограничения и ограничения, чтобы быть в курсе. Начните с чтения в этой теме о статических библиотеках в C++/CX. Вы можете получить исходный код в своей статической библиотеке из вашего приложения UWP, но не рекомендуется создавать общедоступные типы ссылок в такой статической библиотеке. Если компиляции статической библиотеки с параметром/ZW, библиотекарь (на самом деле линкер в маскировке) предупреждает:

Может быть, вам следует рассмотреть возможность оборачивать весь код в Windows, время выполнения компонента или UWP DLL вместо этого.

Смежные вопросы