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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2009, 14:09   #21
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Цитата:
В принципе можно заключить что имена Делфи не искажает, но это скорее вредит чем приносит пользу.
Теперь разобрался, согласен. Экспортировать перегруженные функции можно, но нужно их поименовать, т.е. фактически убрать весь эффект от перегрузки.
BaronTreep вне форума Ответить с цитированием
Старый 14.07.2009, 14:45   #22
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
т.е. фактически убрать весь эффект от перегрузки.
Не пробовал, но возможно в BPL перегрузка позволена...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.07.2009, 15:26   #23
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Угу, в хелпе так и написано
Код:
When you export an overloaded function or procedure from a dynamically loadable library, you must specify its parameter list in the exports clause. For example,

exports
  Divide(X, Y: Integer) name 'Divide_Ints',
  Divide(X, Y: Real) name 'Divide_Reals';
пыщь
JTG вне форума Ответить с цитированием
Старый 14.07.2009, 15:35   #24
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Угу, в хелпе так и написано
А-а-а да да... Припоминаю:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
   procedure tb(b:TBitmap); external 'Project1.dll';
    function A(x : integer; y : integer) : integer; overload; external 'Project1.dll'  name 'a1';
    function A(x : integer) : integer; overload; external 'Project1.dll' name 'a2';
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

 caption:=inttostr(a(10,3)+a(10));
end;

end.
Код:
library Project1;
uses
  Graphics,
  SysUtils,
  Classes;

{$R *.res}
  procedure tb(b:TBitmap);
  begin
   if b<>nil then b.FreeImage;
  end;

function A(x : integer; y : integer) : integer; overload;
begin
   A := x + y;
end;

  function A(x : integer) : integer; overload;
begin
   A := x;
end;
  exports A(x : integer; y : integer) name 'a1',
          a(x : integer) name 'a2';
begin
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.07.2009, 16:33   #25
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

Вобщем еще такой вопрос...

в DLL есть класс диалога (MFC) и его ресурс и функция которая строит этот диалог

Код:
DLL_EXPORT void DoDialog()
{
	AFX_MANAGE_STATE(::AfxGetStaticModuleState());
	nDlg=new CNameDialog();
	nDlg->DoModal();
}
Вызываю функцию из основной программы - все нормально, но вот когда дело доходит до DoModal прога вылетает и ссылается на вот это

Код:
BOOL CObject::IsKindOf(const CRuntimeClass* pClass) const
в objcore.cpp

и диалог не появляется (до OnInitDialog дело даже не доходит), но когда собираю Release, то все прекрасно работает...

В чем может быть проблема?
counter вне форума Ответить с цитированием
Старый 15.07.2009, 21:28   #26
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Если использовать технологию MFC extension DLL, то нужно объявлять с помощью AFX_EXT_CLASS, а не DLL_EXPORT.

Вот пример: http://www.firststeps.ru/mfc/steps/r.php?303

Но такой диалог можно будет вызвать только из других приложений MFC (к слову о переносимости).
BaronTreep вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
dll sergei64_89 Общие вопросы .NET 1 02.08.2008 19:52
DLL MusicMan Помощь студентам 3 21.04.2008 21:30
DLL michaellos Win Api 1 16.11.2007 21:03
.DLL ZhekON Общие вопросы Delphi 3 20.05.2007 21:02
DLL Shico Win Api 1 16.04.2007 16:24