Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизDLL точка входа не найдена Найти похожие ветки
← →
Lena19 (2004-03-10 22:26) [0]всем привет
продскажите что у меня не так
в DLL . во время запуска прога выдает ( точка входа в F2 не найдена )
в проге функции объявлены так
var
function F1(var x,y:byte):integer ;far;external"dll_My";
function F2(var x,y:byte):integer ;far;external"dll_My";
а ето код самой DLL:
library DLL_MY;
uses SysUtils, Classes,
function F1(var x,y:byte):integer ;export;
begin result:=x+y; end;
//*****************************
function F2(var x,y:byte):integer; export;
begin result:=x+y; end;
//******************************
exports dllstep;
exports step;
begin
end.
← →
Petr V. Abramov © (2004-03-10 22:31) [1]Подсказка - а точка входа в dllstep найдна?
← →
Lena19 (2004-03-10 22:31) [2]в конце кода DLL
exports dllstep;exports step;
читать как exports F1;exports F2;
← →
Никто © (2004-03-10 22:38) [3]The directives near, far, and export refer to calling conventions in 16-bit Windows programming. They have no effect in 32-bit applications and are maintained for backward compatibility only.
← →
Sentinel © (2004-03-10 22:42) [4]А OUTPUT DIRECTORY в опциях проекта (и того и другого) указывают на одну папочку? Имеется ввиду: программа, использующая длл сможет найти сама эту длл?
← →
Sentinel © (2004-03-10 22:47) [5]
> Никто © (10.03.04 22:38) [3]
Ну нравится ей так, а ещё она любит фортран или что-то вроде басика, в общем закалка сталинская). Но They have no effect и что-то мне кажется, что дело тут не в етом.
← →
Lena19 (2004-03-10 22:48) [6]да основная прога видит длл
пока в длл небыло функцыи F2
все работало
← →
Sentinel © (2004-03-10 22:52) [7]Попробуй так:
function F1(var x,y:byte):integer;far;external"dll_My" name "dllstep";
← →
Sentinel © (2004-03-10 22:58) [8]А так что-то глянул пристальнее, рекомендую все оформить так:
library DLL_MY;
uses SysUtils, Classes;
function dllstep( var x, y: byte ): integer; export;
begin
result := x + y;
end;
function step( var x, y: byte ): integer; export;
begin
result := x + y;
end;
exports dllstep, step;
begin
end.
в проге функции объявлены так:
function F1(var x,y:byte):integer ;far;external"dll_My"name"dllstep";
function F2(var x,y:byte):integer ;far;external"dll_My"name"step";
procedure TForm1.Button1Click(Sender: TObject);
var x,y:byte;
begin
F1(x,y);
F2(x,y);
end;
← →
Гаврила (2004-03-10 23:00) [9](старая) копия DLL находится раньше новой (где появилась F2), и загружается соответственно старая копия
← →
Sentinel © (2004-03-10 23:01) [10]function F1(var x,y:byte):integer ;export;
begin result:=x+y; end;
//*****************************
function F2(var x,y:byte):integer; export;
begin result:=x+y; end;
//******************************
уж коли так вот постапать тогда и экспортировать их надо, имхо, так:
exports F1 name "dllstep";
exports F2 name "step";
а то откуда компилер знает какая "dllstep" - F1 или F2. Или оформлять посты поаккуратнее
← →
Lena19 (2004-03-10 23:10) [11]TO Sentinel
большое спасибо
exports F1 name "dllstep";
ето то что надо
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c