Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
ВнизDLL Найти похожие ветки
← →
Максим (2007-12-05 13:43) [0]Добрый день!
Приложение вылетает при обращении к библиотеке.
DLL:
library DLLTest;
uses
SysUtils,
Classes;
function Summ(X,Y:Integer):Integer; stdcall;
begin
Result:=X+Y;
end;
exports
Summ;
{$R *.res}
begin
end.
Онклик кнопки на форме:
procedure TForm1.Button1Click(Sender: TObject);
var
r:integer;
begin
r:=Summ(10,10);
Label1.Caption:=IntToStr(r);
end;
После implementation я указываюю что ф-ция находится в библиотеке:
function Summ(X,Y:Integer):Integer; external "DLLTest.dll";
При компиляции вроде бф проходит все без ошибок, однако....... =((
← →
KSergey © (2007-12-05 13:45) [1]> Максим (05.12.07 13:43)
> однако....... =((
Что??
К стати, обратите внимание и найдите все отличия:
function Summ(X,Y:Integer):Integer; stdcall;
и
function Summ(X,Y:Integer):Integer; external "DLLTest.dll";
← →
Palladin © (2007-12-05 13:46) [2]и какая скорость вылета? направление?
← →
Сергей М. © (2007-12-05 13:53) [3]
> Максим (05.12.07 13:43)
> function Summ(X,Y:Integer):Integer; stdcall;
Зачем ? Просто щоб було или на то есть серьезное основание ?
← →
Ega23 © (2007-12-05 13:57) [4]
> Максим (05.12.07 13:43)
Либо убери stdcall в DLL, либо добавь stdcall в приложении.
Заодно почитай, что такое stdcall
← →
Максим (2007-12-05 14:08) [5]Читал что при обращении к функции без stdcall у программистов других языков будут проблемы...
Этот пример совершенно надуманный просто хотелось сделать по уму...
← →
Максим (2007-12-05 14:09) [6]Ошибку свою я понял. Большое спасибо Всем, кто откликнулся =)
← →
Сергей М. © (2007-12-05 14:17) [7]
> Читал что при обращении к функции без stdcall у программистов
> других языков будут проблемы
Смотря о каких "других" языках идет речь.
← →
Максим (2007-12-05 14:34) [8]
> Смотря о каких "других" языках идет речь.
Например Visual C++
← →
{RASkov} © (2007-12-05 14:38) [9]> [7] Сергей М. © (05.12.07 14:17)
> Смотря о каких "других" языках идет речь.
Проблемы будут на любом языке, если бездумно писать код)
А автор, при написании, не понял, что же делает деректива stdcall, да и не знай как до сих пор.... понял суть или нет (
:о)
← →
{RASkov} © (2007-12-05 14:39) [10]> [8] Максим (05.12.07 14:34)
узнай порядок передачи пораметров в стек в Делфи и С++ и сделай вывод)
← →
sniknik © (2007-12-05 14:40) [11]> Например Visual C++
не верю что Visual C++ не имеет возможности указать модель вызова отличную от stdcall...
проблемы скорее будут от другого.
← →
Сергей М. © (2007-12-05 14:42) [12]
> Например Visual C++
Если СРР-программер будет знать, что предлагаемое тобой соглашение о вызове соответствует дифолтному дельфийскому, и программер этот знает все условия этого соглашения, то никаких проблем не возникнет.
Впрочем, это же у тебя пробная функция ?
Кроме соблюдения собссно соглашения о вызове существует еще множество "подводных граблей", связанных со спецификой той или иной среды разработки.
← →
Сергей М. © (2007-12-05 14:43) [13]
> Проблемы будут на любом языке, если бездумно писать код
Эт точно (с)
← →
Максим (2007-12-05 14:55) [14]
> Кроме соблюдения собссно соглашения о вызове существует
> еще множество "подводных граблей", связанных со спецификой
> той или иной среды разработки.
Возможно вы и правы.
Но данном этапе я не ставлю цели написания некого кросплатфоменного проекта, я просто штудирую учебник, и пытаюсь не упустить что-то важное =)
Касаемо
> узнай порядок передачи пораметров в стек в Делфи и С++ и
> сделай вывод)
Обязательно детально разберусь. Но на данном этапе для меня сии поустулаты как дураку фантик =)
Еще раз благодарю всех за разяснения...
← →
Сергей М. © (2007-12-05 15:05) [15]
> не ставлю цели написания некого кросплатфоменного проекта
О кроссплатформенности вообще и речи не идет - ты сам же в кач-ве платформы упомянул только Win32 и ничто более.
А речь с твоей подачи зашла о возможности или невозможности вызова твоей подпрограммы (с дифолтным дельфийским соглашением) из [под]программы, разрабатываемой в некоей иной (не дельфийской) среде разработки
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c