Использование пакета данных C ++ / CLI / CX / etc из приложения UWP C # - PullRequest
0 голосов
/ 20 мая 2019

После нескольких дней экспериментов, которые привели лишь к частичному успеху, я хотел бы спросить, есть ли у меня какой-либо шанс, или я неизменно попаду в тупик.У меня есть приложение UWP C #, обычная среда, которую планируется распространять в Магазине Windows.И у меня также есть пакет данных, написанный на C ++ (в основном C), который я использовал ранее.Старый неуправляемый код вообще не вызывает Windows API, это всего лишь пакет формата данных.Но мне нужно получить к нему доступ непосредственно со стороны C #, и его наиболее важный тип создается как структура значений со многими перегруженными операторами (и это хорошо, так что этот подход просто идеален для предметной области).

Из приложения WPF у меня вообще не возникло бы никаких проблем, оболочка C ++ / CLI value struct, разоблачающая все.Но приложение UWP не хочет делать то же самое.Если я использую ту же оболочку C ++ / CLI, хотя я могу заставить ее самостоятельно скомпилироваться, проект UWP полностью отказывается ссылаться на проект C ++ / CLI.

Я также попробовал более новую версию C ++ / CXно это имеет много ограничений: никаких специализированных конструкторов, никаких перегрузок.Кажется, что ящика с песком гораздо больше, чем мне нужно.

Есть ли какое-то решение, которое я пропустил?Может быть, все еще используя C ++ / CLI (который имеет преимущество в том, что он уже написан :-)) каким-то образом из-под приложения UWP?

Ответы [ 2 ]

0 голосов
/ 21 мая 2019

В конце концов, мне это удалось. Существует промежуточный вспомогательный класс (не структура из-за внутренних ограничений), написанный на C ++ / CX, и фактическая структура, которую я использую, определяется в C # с использованием этого промежуточного элемента.

Сообщения об ошибках в процессе были в основном связаны с тем, что базовый код очень старый, C, даже не C ++, со всеми связанными и внешними компонентами. Но независимо от того, сколько ему лет, он все еще работает ...

0 голосов
/ 21 мая 2019

Начиная с версии 1803, вы должны иметь доступ к полной реализации C ++

C ++ / WinRT - полностью стандартная современная языковая проекция C ++ 17 для Windows Runtime

Если вы хотите использовать код C ++ из C #, то вы, вероятно, захотите скомпилировать его как компонент среды выполнения Windows, так как они могут использоваться на любом другом языке, поддерживаемом UWP.Я думаю, это продемонстрировано в этой документации , даже если приложение потребляет его, похоже, в C ++

...