Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
11-1056787944
mox
2003-06-28 12:12
2004.03.28
Icon


9-1062847814
Gag
2003-09-06 15:30
2004.03.28
Как в вин98 убрать рамку и заголовок у окна


6-1073655406
Va
2004-01-09 16:36
2004.03.28
Как узнать, что закончилась регистрация в сети ?


6-1073822070
Ермак
2004-01-11 14:54
2004.03.28
Программирование сокетов через WinAPI


4-1074274265
Nikolay str
2004-01-16 20:31
2004.03.28
Нужно эмитировать нажатие меню в чужой программе