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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2009, 14:32   #1
nikmay
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 33
Печаль Ошибка при загрузке dll

Ситуация следующая:
Delphi 2009.
Есть библиотека dll и приложение ее использующее.
Приложение нормально работает и компилирется, но
если объявить использование какой-ть функции (процедуры) из dll то компиляция останавливается и появляется сообщение об ошибке...


Подскажите, что это такое??? Это глюк Delphi?
nikmay вне форума Ответить с цитированием
Старый 25.06.2009, 14:41   #2
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

[telepat_mode]Наверное у тебя в коде какая-то ошибка[/telepat_mode]
пыщь
JTG вне форума Ответить с цитированием
Старый 25.06.2009, 14:57   #3
nikmay
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 33
По умолчанию

В коде???
да там и ошибки сделать негде!
Даже если функция из dll пустая, ничего не делающая, все равно ошибка вылезает, стоит только библиотеку объявить в самой программе.
Нет объявлениЯ - нет и ошибки, есть объявление - есть ошибка!!!
nikmay вне форума Ответить с цитированием
Старый 25.06.2009, 14:58   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и появляется сообщение об ошибке
Где? не вижу текста ошибки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.06.2009, 15:03   #5
nikmay
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 33
По умолчанию

Вот скрин-шот...
и текст ошибки...
Изображения
Тип файла: jpg PS.jpg (35.6 Кб, 118 просмотров)
Тип файла: jpg Error.jpg (12.8 Кб, 152 просмотров)
nikmay вне форума Ответить с цитированием
Старый 25.06.2009, 15:15   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Так ошибка при компиляции или при запуске?

Вот это при создании библиотеки видел?
Цитата:
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
пыщь
JTG вне форума Ответить с цитированием
Старый 25.06.2009, 15:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

В таком случае нужно ковыряться в коде.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.06.2009, 15:26   #8
nikmay
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 33
По умолчанию

Да про ShareMem читал не раз.
Но проблемы появляются, даже если процедура из dll пустая и безо всяких параметров.

Цитата:
Так ошибка при компиляции или при запуске?
При попытке запуска! вот так правильнее...
nikmay вне форума Ответить с цитированием
Старый 25.06.2009, 15:30   #9
nikmay
Пользователь
 
Регистрация: 25.06.2009
Сообщений: 33
По умолчанию

Код:
library Project2;

uses
  SysUtils,
  Classes;

{$R *.res}

procedure Proc1; export; stdcall;
begin
      // Пустая процедура
end;


exports  Proc1;

begin

end.
Код:
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


  procedure Proc1; stdcall; external 'Project2.dll';

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
  Proc1;
end;

end.
nikmay вне форума Ответить с цитированием
Старый 25.06.2009, 15:38   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
nikmay
Проверил на D2001. Все работает как часы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при загрузке DLL dani92 Общие вопросы Delphi 12 24.04.2009 14:54
ОШИБКА ПРИ ЗАГРУЗКЕ Костян Пират Операционные системы общие вопросы 5 21.02.2009 12:14
Ошибка при загрузке.... Ronni10 Операционные системы общие вопросы 6 10.01.2008 22:20
Ошибка при загрузке Delphi 6 bllem Общие вопросы Delphi 10 20.11.2006 20:37