подскажите пожалуйста как решить такую проблему
у меня имееться ActiveX который компилируеться binary compatibility
мне пришлось изменить API (добавить параметр в один из методов)
binary compatibility сломалось
я переключился в no compatibility откомпилировал activex и восстановил binary compatibility
теперь все проекты которые используют этот activex не компилируються так как изменился GUID activex-а
подскажите пожалуйста возможно ли как либо изменить API activex и сохранить binary compatibility
Здравствуйте, sergey2b, Вы писали:
S>подскажите пожалуйста как решить такую проблему
Если binary compatibility порушена, а старых исходников не осталось — то никак.
Во избежание проблем в будущем:
1) Переписать ActiveX на чем угодно, кроме VB6.
2) Или не использовать раннее связывание для межмодульного взаимодействия
3) Можно ещё попытаться вынести определения интерфейсов во внешнюю IDL/TLB, таким образом добившись неизменяемости гуидов, но в этом воркэраунде тоже граблей полно (каких конкретно — не припомню за давностью лет)
Здравствуйте, baranovda, Вы писали:
S>>подскажите пожалуйста как решить такую проблему
B>Если binary compatibility порушена, а старых исходников не осталось — то никак.
старые версии activex есть, исходники есть
подскажите пожалуйста как мне действовать если мне надо добавить новый параметр в одной из функций activex
если я нарушаю binary compatibility примерно для 30 проектов причем есть циклические связи между проектами
вообщем очень желательно сохранить binary compatibility
переписать пока не вариант тк только у меня 20mb исходников на VB a их на самом деле больше
Здравствуйте, sergey2b, Вы писали:
S>переписать пока не вариант тк только у меня 20mb исходников на VB a их на самом деле больше
Тяжелый клинический случай, даже не знаю, как и помочь )
Разве что откатиться, почистить реестр, потестировать изменения в режиме Project compatibility, затем подключить старые сборки и попробовать переключится в Binary...
отвечаю на свой вопрос
binary compatibility ненарушеться при добавлении новой функции поэтому можно добавить новую функцию с нужным прототипом но сохранить старую функцию для binary compatibility