Файл .tlb должен быть зарегистрирован? - PullRequest
2 голосов
/ 25 мая 2010

У меня есть com-взаимодействие c ++ dll, которое загружается в c ++ через файл .tlb, созданный в c #. Когда я запускаю на своем компьютере, он работает нормально, но когда я запускаю на компьютере, который только что отформатирован, он дает:

WindowsError: exception code 0xe0434f4d

Нужно ли что-то делать, чтобы файл .tlb или его dll были зарегистрированы в системе? Что-то относительно regasm.exe?

Если это так, можно только скачать regasm.exe и использовать его?

1 Ответ

3 голосов
/ 25 мая 2010

Извините, вы в миллионе миль от правильной диагностики. Библиотеки типов предназначены для компиляторов, они (обычно) не нужны во время выполнения.

Код исключения, который вы получаете, показывает, что происходит не так. Это код исключения для управляемого исключения. Другими словами, ваш код C # вызывает исключение, и оно не обрабатывается. Что довольно часто встречается в коде на C #, когда он обнаруживает проблему, которую он не знает, как ее обработать, а затем выбрасывает вместо создания мусора данные.

Есть два основных способа решения этой проблемы. Подход Q & D заключается в использовании отладчика, переключенного в управляемый режим, и остановке его на необработанном управляемом исключении. Флажок Отладка + Исключение, Брошенный, например. Или вы можете добавить некоторую диагностику в сам метод, например, записав ошибку в блоке перехвата.

Начните с вопросов и ответов, это почти всегда что-то глупое, как FileNotFound.

...