Метод, который я использую для выявления проблем этого типа, заключается в открытии диалогового окна добавления ссылки в Visual Basic 6. Я прокручиваю список доступных COM-библиотек и смотрю, есть ли в нем проблемная DLL. Если это так, CreateObject должен работать, вы должны иметь возможность назначить ему вариантный вариант и использовать позднее связывание для доступа к его членам.
Кроме того, попробуйте временно установить ссылку на переменную и вместо использования CreateObject используйте = New и посмотрите, какие сообщения об ошибках, если таковые имеются, он выдает. В общем, я обнаружил, что они более информативны, чем те, что создает CreateObject.
Наконец, будет полезно, если вы опубликуете причину, по которой вы решили использовать CreateObject вместо установки ссылки. Если DLL является известным объектом, который будет постоянно использоваться программой, тогда должна быть установлена ссылка и обычно используется раннее связывание.
Наконец, возможно, что ошибка возникла из-за зависимости C # COM DLL, а не самой DLL. Если, например, я должен был взять Com-библиотеку и должным образом зарегистрировать ее, но она полагается на COM-библиотеку Widget2000 и НЕ зарегистрирована, то это вызовет ошибку автоматизации. Особенно, если вы тестируете EXE в установленной среде, а не в среде, в которой вы его выполняли.
Например, предположим, что у меня есть программа САПР, написанная на VB6, и у меня есть дерево исходных текстов, которое начинается с MyCAD. EXE находится в MyCAD / MainEXE, а библиотека форм находится в MyCAD / ShapeLibrary. Запускаю IDE все нормально. Затем я выполняю настройку, перехожу к своей тестовой машине и устанавливаю ее, и она вызывает ошибку при создании shapelibrary.
Первым делом я бы проверил, будет ли MainEXE запускаться прямо из каталога MainEXE моего дерева исходных текстов. Этот тест позволит исключить, является ли это проблемой установки или причудой среды IDE по сравнению с соответствующей версией. Затем я смотрел на настройку и смотрел, что не регистрируется. Также посмотрите либо исходный код библиотеки C #, либо настройку библиотеки и посмотрите, какие зависимости ей нужны. Поскольку это согласованная COM-DLL, вы должны иметь возможность использовать инструмент обходчика зависимостей, чтобы узнать, какие COM-ссылки ему нужны. Наконец, убедитесь, что установлена правильная версия .NET framework.
person
RS Conley
schedule
06.06.2011