AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.04.2007, 04:13   #1  
big_bugzy is offline
big_bugzy
Участник
 
13 / 10 (1) +
Регистрация: 15.08.2006
Есть dll, в ней функция с шестью строковыми параметрами.
пишу джоб
Код:
static void TestFunction(Args _args)
{
	 DLL				  MyDLL = new DLL("SomeDll.dll");
	 DLLFunction	  MyFunction  = new DLLFunction(MyDLL, "SomeFunction");
	;
	 MyFunction.arg(ExtTypes::String, ExtTypes::String, ExtTypes::String, ExtTypes::String, ExtTypes::String, ExtTypes::String);
	 MyFunction.call("text1","text2","text3","text4","text5","text6");

}
при выполнении говорит что "Значение регистра ESP не было сохранено при вызове функции "SomeFunction" в библиотеке DLL "SomeDll.dll". Причиной может являться вызов функции DLL, которая объявлена с неверным числом аргументов."
Функция DLL точно сожержит шесть строковых параметров. При вызове из проекта написанного в дельфи
Код:
var
  Form1: TForm1;
procedure MyFunc(Param1,Param2, Param3,Param4, Param5,Param6:string ); external 'SomeDll.dll' name 'SomeFunction';
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 MyFunc('text1','text2','text3','text4','text5','text6');
end;
работает без проблем.
Что я сделал не правильно и как исправить?
Старый 05.04.2007, 05:19   #2  
big_bugzy is offline
big_bugzy
Участник
 
13 / 10 (1) +
Регистрация: 15.08.2006
С количеством параметров вроде разобрался, добавил MyFunction.returns(ExtTypes::void);
возникла друга проблема, теперь пишет что при вызове функции возникла исключительная ситуация.
Выяснил что ошибка возникает при передачи строковых параметров. Как правильно передавать строковые параметры?
DLL написана в дельфи, параметры функции объявлены как string.
Старый 06.04.2007, 08:27   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
В Delphi принимайте параметы как PChar. Кроме того, в описании функции должно присутствовать stdcall
procedure SomeFunction(параметры : PChar); stdcall;
__________________
Axapta v.3.0 sp5 kr2
Старый 09.04.2007, 10:37   #4  
big_bugzy is offline
big_bugzy
Участник
 
13 / 10 (1) +
Регистрация: 15.08.2006
Спасибо, про stdcall забыл
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:11.