Вернутся неверные объекты из COM Callable Wrapper - PullRequest
1 голос
/ 28 августа 2009

Я только что сделал обновление для DLL, которая вызывается из VBA в Powerpoint. Вся разработка прошла нормально, но когда я попытался развернуть на компьютере другого пользователя, у меня возникла проблема, я не знаю, как отлаживать.

В результате получается, что при создании объекта .Net в VBA возвращается ссылка на неверный объект, поэтому следующая строка завершается с ошибкой, когда метод не найден.

Dim myObj As Foo.Bar

Public Sub RefreshData()

//'instantiate object
Set myObj = New Foo.Bar   
//'call a method
myObj.HelloWorld

Последняя строка завершается с ошибкой Ошибка времени выполнения '438' Объект не поддерживает это свойство или метод , что связано с тем, что myObj имеет тип "Wrong.Type" вместо " Foo.Bar».

«Wrong.Type» также находится в сборке, поэтому я предполагаю, что что-то не так с библиотекой типов, но я попытался восстановить (используя regasm / codebase / tlb MyLib.dll), и это не помогло.

Я не знаю, как диагностировать это дальше. Надеемся, что кто-то там может перечислить некоторые шаги по диагностике такого рода проблемы?

Ответы [ 2 ]

1 голос
/ 29 января 2015

Возможно, это проблема автоматически сгенерированных GUID (класс, интерфейс, библиотека типов) - при изменении DLL изменяются GUID. Поскольку старый TLB использовал старые GUID, ссылаясь на него, вы связали эти старые GUID с именами типов, поэтому код не работал с новыми GUID. Большая часть кода VB (6 и .NET), с которым я столкнулся, имеет эту проблему, поэтому, если ваша DLL написана на VB, это, вероятно, она (и ваша работа поддерживает эту теорию).

Если это проблема, общее решение состоит в том, чтобы установить GUID явно, что немного раздражает, если у вас много типов, так как вы должны изменить GUID при изменении версии (версий), и вы ' Я должен сделать это вручную.

0 голосов
/ 14 октября 2011

В этом случае удаление ссылки на файл tlb, а затем добавление его снова решило проблему

К сожалению, я так и не нашел общего решения или объяснения поведения.

...