28.09.2010, 17:46. Просмотров 575. Ответов 0
Добрый день,
Столкнулся с проблемой - методы ATL COM объекта, откомпилированного под VC++7, не могут вызываться при late-binding без дефолтных параметров. Причем при компиляции под VC++6 это работает прекрасно!
Т.е. метод ниже:
[id(1), helpstring('method AA')] HRESULT AA([in, defaultvalue(1)] LONG abc);
можно вызвать только как:
Object.AA 1
но не
Object.AA
Проверял в VB6 и VBScript. Однако если использовать early-binding (объявлять объект как Dim Object As LibraryName.ClassName), то все работает.
При компиляции же с VC++6 правильно работает и early, и late binding.
Если не использовать attributed объекты, а создавать раздельные h и idl-файлы (т.е. всё как в VC++6), то всё работает нормально. Конечно, не использовать attributed расширений - это тоже выход, но не хотелось бы всё-таки от них отказываться.
Поиск по инету ничего не дал. Может, ключик какой-то нужно указывать для компиляции IDL или директиву какую?
Заранее спасибо!
0
|