Свойство C ++ Exposed для COM в idl отображается как строчная буква "внезапно" - PullRequest
1 голос
/ 05 июля 2010

У меня есть старый компонент C ++ COM.Я взял последнюю кодовую базу, собрал ее и обнаружил, что одно из свойств стало строчным.Например, в предварительно скомпилированном dll у меня есть свойство «Тип», но при сборке из исходного кода оно называется «тип».Идентификатор показывает, что свойство называется «Тип».Так что же здесь может происходить?

Ответы [ 2 ]

4 голосов
/ 15 июля 2010

COM нечувствителен к регистру, поэтому в таблице символов библиотеки есть только одна запись для символа "type".Версия, помещенная в таблицу символов, является первой, с которой сталкивается компилятор.

Совет Microsoft по этому вопросу просто:

это же имя еще не присутствует в файле IDL при введении нового идентификатора.

Для получения согласованных результатов вы должны придерживаться либо Type, либо type в IDL.

3 голосов
/ 05 июля 2010

Потерев мой хрустальный шар некоторое время, он пришел к выводу, что вы используете утилиту .NET Tlbimp.exe для преобразования библиотеки типов в класс взаимодействия .NET.У него есть ошибка, он неправильно идентифицирует регистр, если в библиотеке типов есть символ с тем же именем, но с другим регистром.Как и ранее объявление метода в библиотеке типов, которое принимает аргумент с именем «type».Любой идентификатор с именем «Тип» в остальной части библиотеки типов будет преобразован в «тип».

Улучшенная версия утилиты доступна здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...