Управляемое именование методов C ++
Вопрос
Я использую управляемый c ++ для реализации метода, который возвращает строку.Я объявляю метод в своем заголовочном файле, используя следующую подпись:
String^ GetWindowText()
Однако, когда я использую этот метод из C #, сигнатура:
string GetWindowTextW();
Как мне избавиться от лишней буквы "W" в конце названия метода?
Решение
Чтобы обойти хакерство препроцессора заголовочных файлов Windows, объявите его следующим образом:
#undef GetWindowText
String^ GetWindowText()
Обратите внимание, что, если вы на самом деле используете Win32 или MFC GetWindowText()
процедуры в вашем коде, вам нужно будет либо переопределить макрос, либо вызвать их как GetWindowTextW()
.
Другие советы
GetWindowText - это вызов win32 api, которому с помощью макроса присваивается псевдоним GetWindowTextW в вашем проекте на C ++.
Попробуйте добавить #undef GetWindowText в свой проект на C ++.
Управляемый не c ++, а C ++ / CLI для платформы .net.Набор расширений Microsoft для C ++ для использования с их .Сетевая система.
Часто задаваемые вопросы Бьярне Страуструпа http://www.research.att.com /~bs/bs_faq.html#CppCLI
C ++ / CLI - это не C ++, не помечайте его как таковой.Txs