![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Есть DLL - MC8041P.DLL с описанием на С++, в ней функция - 
		
	
		
		
		
		
		
		
			HANDLE OpenCard_N(int no, void (WINAPI *isr)(void), int base_addr, int size, int irq); и пример по использованию- Код: 
	#include ”mc8041p.h”
void WINAPI isr_sub()
{
// TODO:
}
void main()
{
HANDLE ists;
ists = OpenCard_N( 2, isr_sub, 0, 0, 0 ); // PMC-4B-PCIМне нужно подключить эту библиотеку к проекту Delphi Куски моего кода Код: 
	type
  TIsr_sub=procedure ; stdcall;
  TOpenCardN=function (no: Integer; Isr: TIsr_Sub; base_addr: Integer; size: Integer; irq: Integer): THandle;
*******************
$R *.dfm}
 procedure isr_sub;  stdcall;
begin
  { Do nothing }
end;
********************
procedure TSDIAppForm.Button2Click(Sender: TObject);
var
i:THandle;
m:integer;
OpCardN:TOpenCardN;
begin
  if libHandle=0  then
    libhandle:=loadLibrary('MC8041P.DLL');
  if libhandle<>0 then
  begin
    label1.Caption:='Загружено';//lдействительно загружено
    @OpCardN := GetProcAddress(libhandle, 'OpenCard_N');
    if  Assigned(OpCardN)then
    begin
       label2.Caption:='Загружено';//адрес получен
       i:=OpCardN(2,@isr_Sub,0,0,0);//Вэтом месте возникает Access violation, если этот оператор удалить ошибки нет
    end
    else
      label2.Caption:='Почему то не получилось';
  end
  else
    label1.Caption:='Почему то не получилось';
end;Последний раз редактировалось митрийG, 27.10.2012 в 23:50.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Код оформи тегами [ code ] и [ /code] без пробелов. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	TOpenCardN=function (no: Integer; Isr: TIsr_Sub; base_addr: Integer; size: Integer; irq: Integer): THandle;  | 
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
 
митрийG (28.10.2012)
  | ||
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Откуда бы узнать какое соглашение? 
		
	
		
		
		
		
		
	
		
		
	
	
	методом научного тыка - cdecl - пока не вылетает сечас вставлю карточку и проверю - может увидит  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Если написано на C/C++ - вероятнее всего cdecl. 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Цитата: 
	
  |