Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

interface - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написание простого компилятора http://www.cyberforum.ru/cpp/thread5950.html
Хотел бы попробовать написать простенький компилятор, но не знаю с чего начать, помогите ссылкой на какой нибудь урок или советом.
C++ Передача файлов на телефон через COM порт Помогите пожалуста понять как можно осуществить передачу файлов на мобильный телефон через АТ команды!Как посылать АТ команды на телефон и принимать ответ я разобрался!У меня есть АТ команды передачи... http://www.cyberforum.ru/cpp/thread4724.html
C++ задан элипс с центром в точке
Народ кто может помочь по курсовой стучите в асю 358-128-757. Она не такая сложная ток я не как не могу разобраться сам в С++ т.к. я новичок. Помогите плз разобраться, а то самому не получается не...
C++ Инициализация графического режима!
Кто может - помогите!!!! На экране сообщение: ...Device driver file not found (EGAVGA.BGI)... Но в папке BGI он есть. Папка с драйверами задана в настройке при инсталяции. В чем проблема? Может в...
C++ Бегущая строка http://www.cyberforum.ru/cpp/thread4138.html
Привет, подскажите, кто может, как в C++ (на самом деле надо на Perl, но д.б. очень похоже) можно забацать "бегущую строку". Условия: 1. Консольное приложение 2. Вывод в текстовом режиме (STDOUT)...
C++ Из EMF в текстовый файл Суть проблемы такова: есть EMF файл содержащий в себе таблицу поступления товаров. ДЛя обмена данными необходимо извлечь из данного EMF файла только текстовые данные. Если сменить файлу расширение... подробнее

Показать сообщение отдельно
StarikPro
0 / 0 / 0
Регистрация: 19.02.2008
Сообщений: 9

interface - C++

19.02.2008, 16:08. Просмотров 4696. Ответов 7
Метки (Все метки)

Помогите кто чем может! Пишу приложение использующее модули расширения. Программный интерфейс модулей реализован в виде экспортных функций. Данный интерфейс является "входной дверью" обеспечивающий доступ к ресурсам размещённым в модуле. Есть огромная необходимость создания множества подобных дверей. Пытаюсь релизовать поместив все экспортные функции в структуру типа interface. А в экспорт разместил лишь две функции: CreateInterface и DestroyInterface - соответсвенно создание и уничтожение интерфейса. На Делфи удалось реализовать функцию по созданию интерфейса следующим образом:

Delphi
1
2
3
4
5
6
7
8
//сначало определим интерфейс
IDLLInterface = interface(IUnknown)
    ['{AC8948EC-F86D-43e2-96DE-31FC35F96D9E}']//кстати, данный идентификатор (GUID) создаётся нажатием клавиш Ctrl+Shift+G
    procedure Do1; stdcall;
    procedure Do2; stdcall;
    procedure DoN; stdcall;
 
end;
Delphi
1
2
3
4
5
6
7
//теперь класс реализующий функции данного интерфейса
TDLLInterface = class(TObject, IDLLInterface)
  public
    procedure Do1; stdcall;
    procedure Do2; stdcall;
    procedure DoN; stdcall;
end;
В функции CreateInterface помещаю код:
Delphi
1
2
3
4
5
6
7
8
9
10
var
DLLInterface : TDLLInterface; 
IDLL       : IDLLInterface;
begin
 DLLInterface := TDLLInterface.create;
 //функцией из класса TObject получаю указатель на интерфейс 
 DLLInterface.GetInterface(StrToGuid('AC8948EC-F86D-43e2-96DE-31FC35F96D9E'), IDLL); 
 //возвращаем результат
 CreateInterface := IDLL; 
end;
В Builder подобное никак не удаётся проделать.
Пытался реализовывать функции интерфейса как и в классе:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DEFINE_GUID(IID_IDLLInterface, 0xAC8948EC, 0xF86D, 0x43e2, 0x96, 0xde, 0x31, 0xfc, 0x35, 0xf9, 0x6d, 0x9e); 
DECLARE_INTERFACE_(IDLLInterface, IUnknown) 
{
public
    void __stdcall Do1(); 
    void __stdcall Do2();
    void __stdcall DoN();
 
}
//реализую методы
void __stdcall IDLLInterface::Do1()
{}
 
void __stdcall IDLLInterface::Do2()
{}
void __stdcall IDLLInterface::DoN()
{}
В функции CreateInterface помещаю код:
C++
1
2
IDLLInterface * DLLInterface = new (IDLLInterface);
// здесь методы доступны и вызываются но из приложения уже нет
С помощью класса TObject не удалось ничего сделать. Хотелось бы чтобы и для VC решение можно было натянуть.
В си подобных языках я делитант поэтому если что не так не судите строго.
:huh:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru