sss
Продвинутый
- Сообщения
- 332
- Репутация
- 96
Здравствуйте!
Делаю небольшую DLL (на C++) для нужд скрипта. Функция в DLL принимает 2 строки и длину одной из них, возвращает одну модифицированную строку. Выяснилось, что DllCall отрезает строку при первом нахождении символа NULL (0x00), что, по идее, правильно. Но засада в том, что возвращаемая строка - в бинарном виде, и таких символов в ней довольно много...
Можно ли обойти эту засаду? Может, есть какие-то обертки, контейнеры - типа vector и string, или хотя бы просто массив символов, без правил ANSI-строк? В справке нашел только str и wstr...
Сейчас вызываю так:
P.S: в библиотеке использую для хранения std::string
P.P.S: библиотека рабочая, если сделать ввод и вывод строки через файлы - все работает.
Заранее спасибо за ответы.
Делаю небольшую DLL (на C++) для нужд скрипта. Функция в DLL принимает 2 строки и длину одной из них, возвращает одну модифицированную строку. Выяснилось, что DllCall отрезает строку при первом нахождении символа NULL (0x00), что, по идее, правильно. Но засада в том, что возвращаемая строка - в бинарном виде, и таких символов в ней довольно много...
Можно ли обойти эту засаду? Может, есть какие-то обертки, контейнеры - типа vector и string, или хотя бы просто массив символов, без правил ANSI-строк? В справке нашел только str и wstr...
Сейчас вызываю так:
Код:
DllCall("моя_dll.dll", "str", "функция", "str", "строка_1", "str", "строка_2", "USHORT", StringLen("строка_2"))
P.S: в библиотеке использую для хранения std::string
P.P.S: библиотека рабочая, если сделать ввод и вывод строки через файлы - все работает.
Заранее спасибо за ответы.