Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с использованием ActiveX DLL в с++! Нужна помощь, что не так я делаю??? 
V
    Опции темы
DrBoom
  Дата 19.1.2008, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



НародЪ, подскажите, что я делаю не так  smile  ? Я создал ActiveX DLL на VBA. Имя: "MyProj.dll". ОбЪект - MyProj; Класс - Plugin, т.е. 
вызывая, скажем в VBA код выглядит так:
Код

 set some=CraeteObject("MyProj.Plugin")


 В этоОй ActiveX есть только методы:

Run()
Option()
Job()
Quit()

(параметров нет и они ниче не возращают!)

================

Вот код файла MyProj.idl в проекте с++, где пытаюсь задействовать эту DLL:
Код

import "oaidl.idl";
import "ocidl.idl";

[
    uuid(37A3AD11-F9CC-11D3-8D3C-0000E8D9FD76),
    version(0.0),
    helpstring("MyProj 0.0 Type Library")
]

library MyProj
{
    importlib("stdole32.tlb");
    importlib("stdole2.tlb");

    [
        object,
        uuid(37A3AD1D-F9CC-11D3-8D3C-0000E8D9FD76),
        dual,
        helpstring("MyProj Interface"),
        pointer_default(unique)
    ]
    interface IPlugin : IDispatch
    {
        [id(1)] HRESULT Run();
        [id(2)] HRESULT Option();
        [id(3)] HRESULT Job();
        [id(4)] HRESULT Quit();
    };

    [
        uuid(37A3AD1E-F9CC-11D3-8D3C-0000E8D9FD76),
        helpstring("MyProj Class")
    ]
    coclass Plugin
    {
        [default] interface IPlugin;
    };
};


Вот код файла cpp:

Код

#import "MyProj.dll"

MyProj::Plugin Plugin;

int some()
{
 Plugin.CreateInstance(L"MyProj.Plugin");
 Plugin->Run();
}


Использовал  пример описанный тут: http://www.realcoding.net/article/view/1836 .

Однако компилятор выдает след. Error'ы:
Код

error C2079: 'Plugin' uses undefined struct 'MyProj::Plugin'
error C2228: left of '.CreateInstance' must have class/struct/union
error C2227: left of '->Run' must point to class/struct/union/generic type

Пожалуйста, если есть лучше способ, то подскажите, или что я сделал нитак... smile

Добавлено через 2 минуты и 34 секунды
Использую MS 2005 MVC++.

Это сообщение отредактировал(а) DrBoom - 19.1.2008, 13:52
PM MAIL ICQ Jabber   Вверх
jonie
Дата 20.1.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



Цитата

(параметров нет и они ниче не возращают!)
должны возращать HRESULT 

погляди в object inspector относительно того что после #import все появилось....


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
DrBoom
Дата 20.1.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



Цитата(Dr.Boom)
параметров нет и они ниче не возращают!

Цитата(jonie @  20.1.2008,  15:01 Найти цитируемый пост)
должны возращать HRESULT 


Весьма возможно, с с++ я мало работал, а ща, что называется, нужда заставила...
Я говорю, что они не возвращают, относительно VBA, ибо это процедуры sub, а не function.... т.е. по-просту void function!!!

Далее... я так и не понял, что должно появится в проекте и как, ибо этого не было... вот... что делать??? кстати, пытаясь написать 
в файле cpp:
Код

MyProj::PluginPtr Plugin; // как в примере

он выдает мол нет члена класса такого и кучу других error'ов...

Если есть другие, более понятные, более рабочие примеры, скиньте плзЪ, нужно очень задействовать эту DLL!!!!!  smile 

-------------

Даже бубны не помогли=(

Это сообщение отредактировал(а) DrBoom - 21.1.2008, 16:19
PM MAIL ICQ Jabber   Вверх
xvr
Дата 21.1.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(DrBoom @ 19.1.2008,  13:51)
НародЪ, подскажите, что я делаю не так  smile 
Вот код файла cpp:

Код

#import "MyProj.dll"

MyProj::Plugin Plugin;

int some()
{
 Plugin.CreateInstance(L"MyProj.Plugin");
 Plugin->Run();
}



Код

MyProj::PluginPtr Plugin;

Цитата

Использовал  пример описанный тут: http://www.realcoding.net/article/view/1836 .
Читать надо внимательней smile

PM MAIL   Вверх
DrBoom
Дата 21.1.2008, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



xvr, это не ответ на поставленный вопрос, ибо я не отрицаю что где-то ошибился... просто мозгЪ умер, и уже не сображает, мне нужно тыкнуть, гле я и в чем сделел нетак... ибо делал как тама написано!!! И я прошу о помощи... голые слова я тож могу говорить, и я б не приводил код, как пример, если б это делал...
Лучше, еще раз повторю, скажите что я нитак сделал, ибо это единственный пример нашел по использованию ActiveX DLL в с++, и эта статья фигурирует в нескольких цать сайтов... в msdn не нашел примеров, ибо на все языки есть, а на c++ так и написано, ПРИМЕРОВ НЕТ, мол разбирайтесь сами!

Это сообщение отредактировал(а) DrBoom - 21.1.2008, 18:19
PM MAIL ICQ Jabber   Вверх
xvr
Дата 21.1.2008, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(DrBoom @ 21.1.2008,  16:18)
xvr, это не ответ на поставленный вопрос, ибо я не отрицаю что где-то ошибился... 


Это ответ, я написал, что у тебя не так, внимательно смотри мой пост.
Цитата

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

Не так как написано.
Цитата

И я прошу о помощи... голые слова я тож могу говорить, и я б не приводил код, как пример, если б это делал...

Еще раз повторяю - у тебя в сорце написано:
Код

MyProj::Plugin Plugin;

а должно быть
Код

MyProj::PluginPtr Plugin;


PM MAIL   Вверх
DrBoom
Дата 21.1.2008, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



Цитата(xvr @  21.1.2008,  18:40 Найти цитируемый пост)
а должно быть


Извини, но я повторюсь...  Когда пишу так: 
Цитата(DrBoom @  20.1.2008,  22:44 Найти цитируемый пост)
он выдает мол нет члена класса такого и кучу других error'ов...


---------------

 smile  smile 

Это сообщение отредактировал(а) DrBoom - 21.1.2008, 19:03
PM MAIL ICQ Jabber   Вверх
xvr
Дата 21.1.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(DrBoom @ 21.1.2008,  19:02)
Цитата(xvr @  21.1.2008,  18:40 Найти цитируемый пост)
а должно быть


Извини, но я повторюсь...  Когда пишу так: 
Цитата(DrBoom @  20.1.2008,  22:44 Найти цитируемый пост)
он выдает мол нет члена класса такого и кучу других error'ов...


---------------

 smile  smile

А вот это странно, должно работать. Как именно ругается? И что содержится в файле MyProj.tlh (VS должен был его сгенерировать)?

Да, еще - не PluginPtr а IPluginPtr!

Это сообщение отредактировал(а) xvr - 21.1.2008, 21:17
PM MAIL   Вверх
DrBoom
Дата 21.1.2008, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



Цитата(xvr @  21.1.2008,  21:10 Найти цитируемый пост)
IPluginPtr

И так пробывал, он тоже самое пишит, мол member не принадлежит (нету такого в) MyProj... Я уже не наю, что делать, более того, всесто генерации tlh генерирует, я ща не помню так, не со своего компа пишу, но точно заголовочный файл h и файл с, имя которых корявенькое, но содержит "MyProj", и при этом он не включил их в проект, я их попробывал включить, а не ... компилятор еще страшнее начал ругаться, но ошибка с членом не пропадала... я просто в не понятках был... 

PM MAIL ICQ Jabber   Вверх
xvr
Дата 21.1.2008, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(DrBoom @ 21.1.2008,  21:35)
Цитата(xvr @  21.1.2008,  21:10 Найти цитируемый пост)
IPluginPtr

И так пробывал, он тоже самое пишит, мол member не принадлежит (нету такого в) MyProj... Я уже не наю, что делать, более того, всесто генерации tlh генерирует, я ща не помню так, не со своего компа пишу, но точно заголовочный файл h и файл с, имя которых корявенькое, но содержит "MyProj", и при этом он не включил их в проект, я их попробывал включить, а не ... компилятор еще страшнее начал ругаться, но ошибка с членом не пропадала... я просто в не понятках был...

Все страньшн и страньше  smile 
Приатач сюда файлы, которые были сгенерены (только предварительно упакуй их в один архив) - разберемся 
PM MAIL   Вверх
DrBoom
Дата 21.1.2008, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



Без проблем, как до дому добирусь, скорее всего утром, тогда пришлю...

Это сообщение отредактировал(а) DrBoom - 21.1.2008, 22:05
PM MAIL ICQ Jabber   Вверх
DrBoom
Дата 22.1.2008, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



И так... вотЪ аттач, извиняюсь, что с опозданиемЪ, ибо провайдер мой слегка меня отрубилЪ от инета...

===========================

 И так там следующие файлы:
MyProj.idl
и генерируемые им файлы... текст слегка уже отличен от примера, приведенного выше, но суть и проблема таже... делаю так же по примеру! Генерируемые файлы ни как не похожи на те, что в примере и нигде не содержат, хоть лопни и тресни, "I***Ptr"

Это сообщение отредактировал(а) DrBoom - 22.1.2008, 22:32

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  MyProj.zip 3,41 Kb
PM MAIL ICQ Jabber   Вверх
xvr
Дата 22.1.2008, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 8
Всего: 223



Цитата(DrBoom @ 22.1.2008,  22:31)
И так... вотЪ аттач, извиняюсь, что с опозданиемЪ, ибо провайдер мой слегка меня отрубилЪ от инета...

===========================

 И так там следующие файлы:
MyProj.idl
и генерируемые им файлы... текст слегка уже отличен от примера, приведенного выше, но суть и проблема таже... делаю так же по примеру! Генерируемые файлы ни как не похожи на те, что в примере и нигде не содержат, хоть лопни и тресни, "I***Ptr"

Сгенерированны совершенно стандартные файлы от .idl (их делает midl, а не директива #import), и делаются они по умолчанию при трансляции *.idl файла, если он был сам по себе включен в проект VS. #import похоже совсем не сработала.
Покажи файл проекта и *.cpp, где был #import

PM MAIL   Вверх
jonie
Дата 22.1.2008, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 5
Всего: 118



накатал пример как это выглядит, думаю разберешься...

смотри в ClassExplorer )


Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  atl_sampl.rar 6,45 Kb


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
DrBoom
  Дата 23.1.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


QIP VB-SDK Developer
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 19.2.2006

Репутация: нет
Всего: нет



jonie и xvr, спасибо за помощь, проблема была решена...  smile
В общем в моем прокте почему - то вместо IPluginPtr нуно было писать _PluginPtr, почему так я не понял...  smile  
Однако скомпилилось и заработало...  smile 

------------

Еще раз спасибо, хотя вопросы еще есть и будут, и я думаю вернусь суда...
PM MAIL ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: COM/DCOM/ActiveX/ATL/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.