Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 11:54   #1
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
Восклицание Интерфейсы в C++ и Delphi трудности перевода

Здравствуйте. Подскажите пожалуйста, как можно реализовать на C++ библиотеку экспортирующую реализацию интерфейса. Приведу код на Delphi:

Код:
Код библиотеки:

Type
ISampleInterface = interface
 Function SomeOne: boolean;
end;

TSampleInterface = class(TInterfacedObject, ISampleInterface);
 Function SomeOne: boolean;
end;

....

Function GetSampleInterface: ISampleInterface ;
begin
 Result:=TSampleInterface.Create;
end;

exports GetSampleInterface;

Код EXEшника:

Type
ISampleInterface = interface
 Function SomeOne: boolean;
end;

var
SampleInterface : ISampleInterface ;

....

Function GetSampleInterface: ISampleInterface ; external 'SampleInterflib.dll';

....

Procedure MyProc;
begin
 SampleInterface :=GetSampleInterface;
 SampleInterface.SomeOne;
end;
И будут ли совместимы EXEшник напианный на Delphi и библиотека на C++ ?

Спасибо.
Celestia вне форума Ответить с цитированием
Старый 25.04.2012, 13:40   #2
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Ну что-типа:
Код:
 class ISampleInterface
{
   private:
     ISampleInterface(){}
    
   public:   
    virtual bool SomeOne()=0;
};

class TSampleInterface:publicISampleInterface
{
 public:
  virtual bool SomeOne(){}
};

ISampleInterface __declspec(dllexport) __stdcall GetSampleInterface()
{
     return new TSampleInterface();
}
Цитата:
И будут ли совместимы EXEшник напианный на Delphi и библиотека на C++ ?
Ога.
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 25.04.2012 в 13:47.
Krok27 вне форума Ответить с цитированием
Старый 25.04.2012, 16:32   #3
Celestia
Пользователь
 
Регистрация: 03.11.2010
Сообщений: 68
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Ну что-типа:
Код:
 class ISampleInterface
{
   private:
     ISampleInterface(){}
    
   public:   
    virtual bool SomeOne()=0;
};

class TSampleInterface:publicISampleInterface
{
 public:
  virtual bool SomeOne(){}
};

ISampleInterface __declspec(dllexport) __stdcall GetSampleInterface()
{
     return new TSampleInterface();
}

Ога.
пока что то не выходит, получаю invalid abstract return. Ругается на ISampleInterface __declspec(dllexport) __stdcall GetSampleInterface()
Celestia вне форума Ответить с цитированием
Старый 25.04.2012, 16:53   #4
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

ух тыж:
Код:
ISampleInterface* __declspec(dllexport) __stdcall GetSampleInterface()
{
     return new TSampleInterface();
}
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Локализация программы и Delphi(DLL Resources Wizzard) загрузка перевода. Человек_Борща Общие вопросы Delphi 2 22.09.2010 19:19
Вывод символа перевода строки из МЕМО в текст. файл (Delphi) ChEaTeR-abc Помощь студентам 5 02.07.2010 20:43
Трудности перевода Elidan Общие вопросы C/C++ 0 10.06.2009 01:49
Трудности перевода Maks1978 Свободное общение 6 30.05.2008 12:55
Трудности перевода проекта с С на Visual Studio 2005 С++ IP_Sergik Общие вопросы .NET 7 30.04.2008 16:23