Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: COM/DCOM/ActiveX/ATL/CORBA > Создание коллекции с использованием ATL! |
Автор: vovik4385 12.11.2013, 09:21 |
Здравствуйте столкнулся с такой проблемой: Создал я СОМ сервер на с++ и клиент на VB вроде все работает!но только при нажатии кнопки DRAW в клиенте выдается ошибка runtime error 5 invalid procedure call or argument!но что самое интересное в среде разработки VB кнопка работает, в чем может быть причина? |
Автор: xvr 12.11.2013, 14:02 | ||
Судя по вот этому -
Опишите ваш индекс в BetterSquiggleCollection.idl как Long а не VARIANT, система сама вам приведет тип к целому, и сама обругается, если это не получится |
Автор: vovik4385 12.11.2013, 18:22 |
c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CSquiggleCollection2>' : cannot instantiate abstract class due to following members: c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CSquiggleCollection2> >::CreateInstance(void *,const struc t _GUID &,void ** )' c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall ISquiggleCollection2::Item(long,struct tagVARIANT *)' : pure virtual function was not defined e:\òðåëüñåí ý. - ìîäåëü com è ïðèìåíåíèå atl 3.0\samples\chapter 11\squiggle collection 2\bettersquigglecollection.h(98) : see declaration of 'Item' c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CSquiggleCollection2> >::CreateInstance(void *,const struc t _GUID &,void ** )' c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : error C2259: 'CComObject<class CSquiggleCollection2>' : cannot instantiate abstract class due to following members: c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CSquiggleCollection2> >::CreateInstance(void *,const struc t _GUID &,void ** )' c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1827) : warning C4259: 'long __stdcall ISquiggleCollection2::Item(long,struct tagVARIANT *)' : pure virtual function was not defined e:\òðåëüñåí ý. - ìîäåëü com è ïðèìåíåíèå atl 3.0\samples\chapter 11\squiggle collection 2\bettersquigglecollection.h(98) : see declaration of 'Item' c:\program files\microsoft visual studio\vc98\atl\include\atlcom.h(1823) : while compiling class-template member function 'long __stdcall ATL::CComCreator<class ATL::CComObject<class CSquiggleCollection2> >::CreateInstance(void *,const struc t _GUID &,void ** )' вот ято мне компилятор выдал!!! |
Автор: vovik4385 12.11.2013, 21:04 |
Мне кажется дело не в этом(так как тогда бы и другие кнопки не работали бы ) а то не работает только одна кнопка DRAW? |
Автор: vovik4385 12.11.2013, 21:34 |
xvr, не могли бы вы попробывать запустить? |
Автор: xvr 13.11.2013, 14:19 | ||||||
Запустил, у меня все работает. Поменял тип параметра на LONG - опять все работает: IDL file:
SquiggleCollection2.h (строка 72)
SquiggleCollection2.cpp (специально не стирал, а закоментарил лишнее)
|
Автор: vovik4385 13.11.2013, 18:10 |
А в чем тогда причина может быть? |
Автор: vovik4385 13.11.2013, 18:10 |
А в чем тогда причина может быть? |
Автор: vovik4385 13.11.2013, 20:29 |
после того как я исправил код, ТЕПЕРЬ ОШИБКА при нажатии кнопки DRAW что обнаружена ошибка и приложение будет закрыто извините за неудобства? и при отладке ошибка доступа? |
Автор: vovik4385 13.11.2013, 21:05 |
отладил выдает ошибку (KERNELBASE.DLL) 0xC00000F float inexact result!!Как можно решить эту проблему? |
Автор: xvr 14.11.2013, 10:37 |
Запустите ваш COM сервер под отладчиком:
|
Автор: vovik4385 14.11.2013, 17:55 |
я запускал под отладчиком, отладил выдает ошибку (KERNELBASE.DLL) 0xC00000F float inexact result Добавлено через 7 минут и 58 секунд как можно решить эту проблему? |
Автор: xvr 14.11.2013, 21:24 | ||
Где именно выдает? Он должен показать строку в вашем коде. |
Автор: vovik4385 15.11.2013, 05:44 |
первая строчка в функции item? |
Автор: xvr 15.11.2013, 14:07 |
Смотрите переменные. Для начала - this, потом m_vecSquiggles Вы вообще отладчиком пользоваться умеете? Без этого заниматься разработкой программ нереально ![]() |
Автор: vovik4385 15.11.2013, 16:53 |
не очень!!! |
Автор: xvr 16.11.2013, 17:32 | ||
Тогда учитесь - вот http://msdn.microsoft.com/ru-ru/library/sc65sadd.aspx например расписано подробно |