Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Проблема с dll


Автор: Satman 14.5.2006, 14:42
Проблемка с dll
Пользуюсь Delphi7
основная программа
Код

 program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows,ShareMem;
function GetInfo:string;stdcall;external 'mul.dll';
begin
  { TODO -oUser -cConsole Main : Insert code here }
  writeln (GetInfo);
  readln;
end. 

код библиотеки
Код

library mul;
uses ShareMem;
function  GetInfo(a:byte) :string ; stdcall;
  begin
    GetInfo:='Плагин для умножения';
  end;

function  Action (op1,op2:Integer):integer ;stdcall;
  begin
    Action:=op1*op2;
  end;
exports  GetInfo,Action;  
begin
end.

Программа при запуске печатет строку 'Плагин для умножения'
а после выхода выскаикивает ошибка
Debugger Fault Notification ../../Project1.exe acces violation at 0x0000000:
read of adress 0x000000...     Process Stopped.Use Step or Rin to continue
Подскажите что я делаю не так

Добавлено @ 14:55 
Заметил nxj если вызвать другую функцию
Код

program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils,Windows,ShareMem;
function Action(op1,op2:integer):integer;stdcall;external 'mul.dll';
begin
  { TODO -oUser -cConsole Main : Insert code here }
  writeln (Action(3,4));
  readln;
end.

то все номально....что то со стрингом не то ...кто знает посоветуйте 

Автор: Nickel 14.5.2006, 15:03
Сравни:
Цитата
function GetInfo:string;stdcall;external 'mul.dll';

и
Цитата
function  GetInfo(a:byte) :string ; stdcall;
 

Автор: Satman 14.5.2006, 15:07
проблема сама себя изжила
создал новый тип вместо стринга type Tcool=String[50];
и все запахало..а да еще исправил a:byte
Спасиб, Nickel 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)