Экспорт классов из С++ в VB

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Экспорт классов из С++ в VB

Сообщение d3drm » 11.05.2005 (Ср) 0:16

У кого-нибудь есть простой примерчик? :) Хочу написать DLL с классами для VB, но не знаю как...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 11.05.2005 (Ср) 0:47

File -> New -> ATL COM AppWizard -> Finish
Insert -> New ATL Object -> Simple Object
пишешь код класса, компилируешь.
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 11.05.2005 (Ср) 0:50

Спосибо, tyomitch, буду пробовать!
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 11.05.2005 (Ср) 1:03

код класса, пытаюсь вставить функцию, а она не экспортируется... Куда надо объявления функций вписывать?

Код: Выделить всё
/////////////////////////////////////////////////////////////////////////////
// CMyInterface
class ATL_NO_VTABLE CMyInterface :
   public CComObjectRootEx<CComSingleThreadModel>,
   public CComCoClass<CMyInterface, &CLSID_MyInterface>,
   public IDispatchImpl<IMyInterface, &IID_IMyInterface, &LIBID_COMLib>
{
public:
   CMyInterface()
   {
   }

DECLARE_REGISTRY_RESOURCEID(IDR_MYINTERFACE)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CMyInterface)
   COM_INTERFACE_ENTRY(IMyInterface)
   COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()

// IMyInterface
public:
   

};

#endif //__MYINTERFACE_H_
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 12.05.2005 (Чт) 23:08

фсе исчо не догнал... не работает и фсе тут. не экспортирует функции, хотя с классами фсе ок... кто работал, может все-таки объяснит, где функции прописывать?
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 12.05.2005 (Чт) 23:51

Слева есть такое деревце - ClassView.
Находишь в нём свой класс, тыкаешь правой кнопкой, выбираешь "Add Member Function".
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 12.05.2005 (Чт) 23:59

сделал и как ты сказал, получилось тоже самое, что делал я. компилирую, класс виден, а вот его члены нет...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.05.2005 (Пт) 0:38

Сорри что обманул... Метод надо добавлять не в класс, а в его интерфейс (так же, по правому клику в деревце) :oops:
Теперь видно?
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.05.2005 (Пт) 0:54

видно :D

только вызывается нормально, только почему-то эта штука не возвращает значения (((
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.05.2005 (Пт) 0:59

Потому что последний параметр, если нужно в нём возвращать значение, объявляется как [out,retval]
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 13.05.2005 (Пт) 1:08

ругается на квадратные скобки...
ХЎ

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 13.05.2005 (Пт) 10:04

Квадратные скобки должны быть в idl-файле, а в срр-файле как обычно
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.05.2005 (Вт) 8:44

а как экспортировать структуры?
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.05.2005 (Вт) 9:10

Имхо, мануал по IDL тебе почитать стоит :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 17.05.2005 (Вт) 9:18

GSerg, с удовольствием бы. Только нету...
ХЎ

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.05.2005 (Вт) 9:26

В MSDN есть :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 04.06.2005 (Сб) 1:16

читал msdn ничего не понял...

братцы, помогите, вы можете дать новую жизнь проекту! Очень прошу, сделайте демку с экспортом класса, в котором балы бы функция возращающая хоть что-нибудь! Сам никак! Мааааленькую демочку...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.06.2005 (Сб) 14:10

Без UDT-то заработало, или вообще нет?
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 05.06.2005 (Вс) 18:50

tyomitch, UTD - это что? Я вообще довольно хило разбираюсь в написании нестандартных проектов на С++, знаю только сам язык. Отсюда огромная просьба, tyomitch, пожалуйста, сделай небольшой проект с одним классом, в котором будет функция возращающая какое-нибудь число. Как только у меня будет каркас, я смогу смело переписать iRender на С++ в том виде, в котором он есть, но с расширенными функциями. Я уже собраз огромную кучу материала, но все в проектах ехе, осталось самое, казалось бы, простое, но разобраться в этом не могу (((
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.06.2005 (Вс) 21:24

d3drm писал(а):а как экспортировать структуры?

UDT - так по-бейсиковски называются структуры. User-Defined Type.

Щас чё-нибудь состряпаю...
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.06.2005 (Вс) 23:28

Держи сэмпл
Вложения
Sample.rar
(368.47 Кб) Скачиваний: 50
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 05.06.2005 (Вс) 23:41

Темыч, руль! огромное спасибо!!!!
ХЎ

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 07.06.2005 (Вт) 1:29

Все-таки вопрос относительно экспорта структур остался для меня открытым...

Я так понимаю что-то нужно прописать в idl файле, так как компилятор ругается, если в качестве параметра указан мой тип...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.06.2005 (Вт) 13:27

d3drm писал(а):Все-таки вопрос относительно экспорта структур остался для меня открытым...

Я так понимаю что-то нужно прописать в idl файле, так как компилятор ругается, если в качестве параметра указан мой тип...

Да. Просто скопировать туда объявление твоей структуры из сишного файла и добавить перед объявлением слово "public"
Разбери любую TLB, где есть структуры, (например, созданную в VB) - тебе всё станет понятнее.
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 07.06.2005 (Вт) 13:36

примеров tlb на С++ нет, а вот между VB и С++ не вижу сходства...

на счет копирования, в idl файл когда копирую - ругаеца... копирую в верх модуля...
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.06.2005 (Вт) 13:51

Пошаговая инструкция:
1. Создай в VB компонент с публичным UDT
2. Скомпилируй компонент
3. Декомпилируй получившуюся TLB
4. Изучи её IDL-исходник
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 07.06.2005 (Вт) 13:52

3. КАК?
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.06.2005 (Вт) 14:25

Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 09.06.2005 (Чт) 20:30

скачал обе программы из приведенного топика, но Oleview просто отказывается загружать tlb, а PEBrowsePro ничего не декмпилирует. Как же мне узнать, как экспортировать структуры? :cry:
ХЎ

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 09.06.2005 (Чт) 21:10

d3drm писал(а):Oleview просто отказывается загружать tlb

Почему мне даёт?

Ты в нужное место тыкаешь? Надо не в раскрытую папочку, а в три красных треугольника.
Изображение

След.

Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 48

    TopList