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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2010, 19:09   #1
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию Не пойму почему ошибка...

Код:
library Memsym;

uses
  SysUtils,
  Classes,
  Graphics;

exports CompareBitmaps(Source:TBitmap):PChar;

function CompareBitmaps(Source:TBitmap):PChar;
Var
Symbols:array [0..21] of TBitmap;
Begin
End;

{$R *.res}

begin
end.
На выделенной строчке выскакивает ошибка... dll создается, но мне кажется что так быть не должно. Поставил выделенную строку под функцию, убрал описание переменных. Оставил только название функции. нажал F9 дельфи выдало следующее:
"Cannot debug project unless a host application is defined. Use the run parameters... dialog box"
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 22.08.2010 в 19:13.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 22.08.2010, 19:12   #2
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Что за ошибка? Мы ж не телепаты.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 22.08.2010, 19:14   #3
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

[Error] Memsym.dpr(8): Undeclared identifier: 'CompareBitmaps'
[Error] Memsym.dpr(10): Identifier redeclared: 'CompareBitmaps'
Такс... dll требует источника для запуска. это я понял, а почему нельзя объявить экспортируемую функцию перед её описанием?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"

Последний раз редактировалось ImmortalAlexSan; 22.08.2010 в 19:18.
ImmortalAlexSan вне форума Ответить с цитированием
Старый 22.08.2010, 19:21   #4
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

шаблон DLL:



library MyDll;

uses

<используемые модули>;



<объявления и описания функций>



exports

<экспортируемые функции>



begin

<инициализационная часть>

end.
_Engine_ вне форума Ответить с цитированием
Старый 22.08.2010, 19:25   #5
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Я бы еще добавил:
Код:
function CompareBitmaps(Source:TBitmap):PChar; StdCall;
Это позволит обращаться к вашей библиотеке не только программам написанным на Delphi.

Цитата:
а почему нельзя объявить экспортируемую функцию перед её описанием?
Вот даже не знаю что ответить...Скажу так: по закону жанра.

А как же вы хотите запустить dll на исполнение. Тут нужна программа, которая будет обращаться к ней (можно настроить, чтоб она запускалась при компилляции dll).
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 22.08.2010 в 19:28.
ex.cluz вне форума Ответить с цитированием
Старый 22.08.2010, 19:28   #6
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Не хочется мне чтобы к библиотеке обращались программы, написанные не на дельфи, да и вообще можно ли ввести ограничение на использование только моей программой? Я понимаю, что длл - это разделяемый ресурс... но всё же.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 22.08.2010, 19:31   #7
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Цитата:
можно ли ввести ограничение на использование только моей программой?
Проверку замутить можно. Но достаточно просто не публиковать формат экспортируемых функций. Ведь чтобы обратиться к какой-то функции в dll нужно знать формат и количество посылаемых/возвращаемых данных.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 22.08.2010, 19:35   #8
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Тогда каким образом извлекают информацию из библиотек, принадлежащих OGL и подобных ей?
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 22.08.2010, 19:44   #9
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Дизассемблирование отменили?
dll - это таже exe, только без точки входа.

Да и вообще, OGL же открытый!
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 22.08.2010, 19:53   #10
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Во! Спасибо! Всё, что надо узнал.
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
VBA не пойму почему не скрипт читает второе сообщение Drek Помощь студентам 0 20.07.2010 01:06
не пойму почему. spaun88 Общие вопросы Delphi 8 09.06.2010 17:26
не пойму где ошибка C-Jay Общие вопросы C/C++ 1 03.01.2010 01:45
не пойму в чем ошибка Анастасия123456789 Помощь студентам 3 23.03.2009 15:53
Не пойму в чем ошибка Machete PHP 2 08.12.2008 10:09