2010-05-24 5 views
2

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

WindowsError: exception code 0xe0434f4d 

Должен ли я сделать что-то для файла .tlb или его DLL должен быть зарегистрирован в система? Что-то в отношении regasm.exe?

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

ответ

3

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

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

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

Начать с Q & D, это почти всегда что-то глупое, как FileNotFound.

+0

Моя проблема заключается в том, что я использую программу python, которая вызывает dll cll-оболочки, и вызывает вызов C# com interop dll! И я тестирую его на компьютере без визуальной студии. (Я установил часть перераспределения компактных фреймов C++ и .net 3.5). И он работает на компьютере, что я сделал код. Можете ли вы указать мне что-то о Q & D, пожалуйста, –

+2

Q & D означает «быстрый и грязный». –