WinCC и DLL
Павел Власкин; 23.5.02

не могу вызвать функцию из dll-ки. при компиляции все ок, при исполнении:

255,23.05.2002,15:05:21:634,1007001,4,,ASU_TP_2,SCRIPT,ExecuteError in Action @6

ошибка возникает именно на вызове функции. DLL написана в дэлфи, WinCC 5.0sp1, вызывающий скрипт:

{
#pragma code("RVSPasp.dll");
float LevToVol(int rvs, float level);
#pragma code();

float a=GetTagFloat("r1_lev");
float res = LevToVol(1,a);
return (res);
}
Re: WinCC и DLL
Костенич Дмитрий; 28.5.02

А ты не забыл случайно указать чтобы DLL собиралась для вызова функций в C-шной конвенции (в MSVC для этого служит extern "C"{})?

Если не забыл - отлаживай свою DLL...
Re: WinCC и DLL
Павел Власкин; 28.5.02

Не забыл. Там и через WinAPI можно, по идее :)


Function LevToVol(rvs:integer;level:single):single;cdecl;

Dll работает на ура, сделал в дельфе програмку, которая ее гоняет - все ок.

расшифровать бы ошибку...
Re: WinCC и DLL
Колпащиков Сергей; 7.6.02

Добрый день.

Если вы писали DLL на Delphi, то может быть в этом проблема.
Если использовать RECORD,
необходимо снять флаг Aligned record field.
Иначе возникает проблема при использовании функций DLL не из под Delphi и если вы вызываете, например, ODK функции из свой DLL.