Как получить GUID (атрибут Assembly) сборки C # в c ++ - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь прочитать атрибут GUID сборки C # .net из c ++ (VC ++ 10).

Я должен отметить, что я не хочу использовать .net или .net отражение. ищу чистый путь с ++.

в чем решение?

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 30 марта 2011

Вам необходимо использовать API неуправляемых метаданных

и особенно метод IMetaDataImport :: EnumCustomAttributes

Это будет довольно сложно... Вот ссылка, которая дает хорошую отправную точку для этого (это C #, но идеи точно такие же, и на самом деле проще программировать на C ++): Чтение типов из сборки

1 голос
/ 30 марта 2011

Проверьте формат файла .NET Метасекция в CodeProject.

0 голосов
/ 23 декабря 2013

Я понимаю, что вы не хотите использовать отражение или .net.Однако вы действительно хотите получить GUID из имеющейся у вас C # dll, созданной с помощью .NET.

Обычный способ, которым разработчики C # делают свои библиотеки классов доступными для разработчиков на основе COM, - это использование tlbexp.exe(экспорт библиотеки типов) для экспорта файла библиотеки типов.

Разработчик COM может затем использовать файл .tlb в своем коде COM.

Когда разработчик C # создает dll, они либопоместите Guid вручную на уровне AssemblyInfo (в .NET), или компилятор автоматически сгенерирует Guid при сборке dll.

покажет, как создается COM-клиент (C ++) для использования COM-сервера (C #)http://msdn.microsoft.com/en-us/library/aa645738%28v=vs.71%29.aspx

обратите внимание, что в этой статье упоминается другой инструмент regasm.exe, который регистрирует dll и может одновременно экспортировать tlb, но при этом нет необходимости регистрировать dll в вашей системе

в качестве разработчика вы можете просто использовать файл tlb

...