СЦЕНАРИЙ:
Я делаю [Edit: native WinRT] C ++ Direct X DLL проект для приложений Магазина Windows, основанный на примере кода Visual Studio «Direct3D App».
Это должен быть отдельный проект DLL от моего проекта в Магазине Windows, потому что я буду использовать свой XAML UserControl с визуализатором Direct X внутри него как в приложении Windows 8 Metro, так и в версии приложения для Windows Phone.
ЭТА ПРОБЛЕМА:
Я не могу сослаться на проект C ++ в проекте приложения C # Windows Store. Visual Studio отказывается со следующими словами:
A reference to <project-name> could not be added.
Я видел предложения по компиляции проекта C ++ с использованием флага / clr, но это несовместимо с:
Таким образом, флаг / clr не представляется возможным в этой ситуации.
ВОПРОС:
Как я могу сослаться на проект C ++, чтобы я мог использовать мой XAML Direct X рендерер в проекте C # Windows Store App? Или есть лучшая альтернатива?
Заранее спасибо.
Я решил проблему, заново создав проект C ++ как Windows Runtime Component
проект. Я изначально создал проект из Class Library (Windows Store apps)
шаблон. Должно быть, шаблон Win RT имеет некоторые параметры конфигурации, которые позволяют ему работать.
После внесения этого изменения проект можно добавить в качестве ссылки в проект C #.
Именно из-за ответа @ user1610015 я понял, что на самом деле разрабатываю собственный код Win RT, а не управляемый код, что побудило меня попробовать это решение — спасибо!
/ ZW флаг для проектов C ++ / CX. C ++ / CX по синтаксису практически идентичен управляемому C ++ (C ++ / CLI), за исключением того, что C ++ / CX полностью неуправляем. Возможно, именно это заставило вас думать, что вы разрабатываете управляемый C ++, хотя на самом деле это не так.
Я не использовал C ++ / CX, но, как я слышал, классы среды выполнения Windows являются классами COM. Поэтому я думаю, что вы можете использовать Tlbimp.exe инструмент из Windows SDK для создания управляемой библиотеки DLL из вашей неуправляемой библиотеки DLL, на которую затем можно ссылаться из проекта C #. Попробуйте и дайте мне знать, если это работает.
Другой вариант — поговорить с Windows Runtime без C ++ / CX. Хотя C ++ / CX значительно облегчает программирование среды выполнения Windows, в этом нет особой необходимости. Вы также можете использовать библиотеку WRL. Поскольку библиотека WRL является чистым C ++, ее также можно использовать из C ++ / CLI.