Тема: Использование в PHP dll написанной на Делфи
Добрый день. Перед мной стоит задача импортировать приличное количество кода из Делфи в PHP. Для этого использую DynamicWrapper так как это проще(удобнее) и быстрее чем использовать свои COM объекты. Но не в этом суть. Не получается выполнить функции из dll в PHP, хотя в самом делфи все прекрасно работает.
Код на делфи:
library Project2;
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Grids, ExtCtrls, Spin;
{$R *.res}
procedure myinc(var c:integer);
begin
c:=c+1;
end;
procedure mydec(var c:integer);
begin
c:=c-1;
end;
function mydiv2(c:integer):Integer;
begin
Result:=c div 2;
end;
exports
myinc name 'myinc',
mydec name 'mydec',
mydiv2 name 'mydiv2';
begin
end.
На выходе имеем dll-ку, все Ок.
PHP:
$com = new COM("DynamicWrapper");
$com->Register("Project2.dll", "mydiv2", "i=l" , "f=s" , "r=l");
Выходит ошибка:
Fatal error: Uncaught exception 'com_exception' with message 'Error [0x80070057] Параметр задан неверно. ' in Z:\home\localhost\www\POS\tstcom.php:12 Stack trace: #0 Z:\home\localhost\www\POS\tstcom.php(12): com->Register('Project2.dll', 'mydiv2', 'i=l', 'f=s', 'r=l') #1 {main}
DynaWrap.dll зарегистрировал, тут все без ошибок. С WinApi функциями работает без проблем. Думал проблема в порядке параметров. Пробовал stdcall в делфи добавлять и с параметром "f=s" экспериментировать(хотя написано, что он игнорируется). В чем загвоздка?