AutoIt3 / C++ / DLL

0

Witam.

DLL-ka ( testowa ) posiada dwie funkcje :

 

int FunkcjaQuattro(char * a)
{
    return strlen(a);
}

oraz

DLL-ka ( testowa ) posiada dwie funkcje :

 

int FuncString(string a)
{
   return a.length();
}

Teraz z poziomu AutoIt-a chciałbym wywołać obie funkcje i otrzymać długość łańcuchów przekazanych w parametrach.

W tym przypadku, wszystko jest w porządku, funkcja zwraca długość łańcucha

 

$result  = DllCall($objPurtDll, "int:stdcall", "FunkcjaQuattro", "str" , "ALA MA KOTA")
DllClose($objPurtDll)
msgBox(16,"aaa", $result[0])

Natomiast tutaj ( chyba z uwagi na to, że argumentem funkcji jest string ), funkcja DllCall kończy się błędem, a sam program "wysypuje się".

 

$result  = DllCall($objPurtDll, "int:stdcall", "FuncString", "str" , "ALA MA KOTA")
DllClose($objPurtDll)
msgBox(16,"aaa", $result[0])

Ktoś ma jakieś doświadczenie w tym zakresie w AutoIt-cie?

Dziwne, że funkcja nie radzi sobie z przekazaniem łańcucha do funkcji, której argumentem jest zmienna std::string.

Z góry wielkie dzięki za wskazówki.

Pozdrawiam

0

int:stdcall a funkcje domyslnie są cdecl
Dwa string to obiekt klasy, a przekazujesz zwykły łańcuch znaków.

1 użytkowników online, w tym zalogowanych: 0, gości: 1