Autoit v.3.3.14.5
Столкнулся с непонятной ситуацией. Есть DLL, написанная на с++. Просто надо вернуть строку в автоит:
Пока в возвращаемой строке 16 и менее символов - всё работает безупречно. Но если возвращать 17 и более символов - либо ошибка либо китайские иероглифы.
Также переделывал DLL на такой вид:
Результат тот же, максимум корректно передаёт только 16 символов. Написал в с++ программу, которая использует эту DLL, там нет никаких ограничений на колличество передаваемых символов.
Получается это ограничение самого автоита?
Столкнулся с непонятной ситуацией. Есть DLL, написанная на с++. Просто надо вернуть строку в автоит:
Код:
//c++
extern "C" __declspec(dllexport) std::string TESTSTR();
std::string TESTSTR()
{
return "STROKA1234578908";
}
Код:
$return = DllCall ( "Test.dll", "str", "TESTSTR" )
ConsoleWrite('$return[0]= ' & $return[0] & @CRLF )
Пока в возвращаемой строке 16 и менее символов - всё работает безупречно. Но если возвращать 17 и более символов - либо ошибка либо китайские иероглифы.
Также переделывал DLL на такой вид:
Код:
//c++
extern "C" __declspec(dllexport) int TESTSTR(char* stroka1)
int TESTSTR(char* stroka1)
{
char src1[] = "564g62t46tc4364tc2t34t26t4374723";
strcpy_s(stroka1, 255, src1);
return 1;
}
Код:
$hDLL = DllOpen("Test.dll")
$s1 = DllStructCreate("char[255]")
$return = DllCall ( $hDLL, "int", "TESTSTR", "str", DllStructGetPtr($s1) ) ; работает максимум 16 символов
DllClose($hDLL)
Результат тот же, максимум корректно передаёт только 16 символов. Написал в с++ программу, которая использует эту DLL, там нет никаких ограничений на колличество передаваемых символов.
Получается это ограничение самого автоита?