Нет, это вызвано значительной несовместимостью между типами перечисления .NET и ключевым словом enum в таких языках, как C и C ++.Эти языки добавляют членов перечисления в глобальное пространство имен.Что на самом деле является большой проблемой, часто заставляет вас добавлять префиксы к именам членов перечисления, чтобы они не конфликтовали с другими идентификаторами.Как и «константа», как вы использовали в своем фрагменте.
Недавно утвержденный новый стандарт языка C ++ (C ++ 11) на самом деле имеет исправление этой проблемы с новым ключевым словом enum class ,Который работает так же, как перечисления .NET, они должны иметь префикс с именем типа enum.По совпадению также тот же синтаксис, который использовался в C ++ / CLI 6 лет назад.Вероятно, это не случайность.
Нет ничего разумного, что может сделать экспортер библиотеки типов.Но префикс члена перечисления с его именем типа.Как раз то, что вы видите, "EnumName_constantName1".Невыполнение этого вызовет ужасы столкновений имен идентификаторов.
Но посмотрите на яркую сторону, вам больше не нужно использовать этот уродливый «постоянный» префикс.Код клиента теперь может использовать «EnumName_Name1».Если вам действительно нужно это исправить, вы можете декомпилировать библиотеку типов в .idl с помощью программы oleview.exe.Отредактируйте typedef и скомпилируйте его обратно в .tlb с помощью midl.exe.В противном случае это болезненно.