Как преобразовать тип ссылки C # в тип CLI \ C ++ ^% - PullRequest
0 голосов
/ 08 марта 2011

Я пишу приложение на Managed C ++ (CLI \ C ++).В которой я использую библиотеку (файл .dll), которая написана на C #.

В файле я сталкиваюсь с проблемой.

Я реализую функции интерфейса, который написан набиблиотека.

Объявление функции в библиотеке выглядит следующим образом:

COMWORKSPACELib.IWorkspaceEvents.WorkspaceMessage(int, string, COMWORKSPACELib.EnumNotificationCode, COMWORKSPACELib.EnumNotificationType, string, ref COMWORKSPACELib.EnumNotificationReply);

Когда я пишу тот же код в CLI \ C ++, объявление выглядит так:

WorkspaceMessage(int workspaceToken, String ^description, EnumNotificationCode ^code, EnumNotificationType ^type, String ^source, EnumNotificationReply ^%action);

Здесь компилятор выдает ошибку, что «класс должен обеспечивать реализацию метода интерфейса».Поскольку параметры, передаваемые в обоих объявлениях функций, синтаксически различны.

Есть ли альтернативный способ сопоставить объявление библиотеки?

Если я удаляю символы «^» и «%», чтобы соответствовать библиотекеобъявление затем дает дальнейшие ошибки в коде.

1 Ответ

3 голосов
/ 08 марта 2011

Являются ли EnumNotifcationCode, EnumNotificationType и EnumNotfication всем перечислениями? То есть они являются типами значений? Если так, то это должно быть объявлено следующим образом:

WorkspaceMessage(int workspaceToken, 
                 String^ description, 
                 EnumNotificationCode code, 
                 EnumNotificationType type, 
                 String^ source, 
                 EnumNotificationReply% action);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...