Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » Пользователи для пользователей » Пользователи для пользователей » Как передать строку из внешней DLL в МРВ ТМ6

   
Автор / Author Тема / Topic: Как передать строку из внешней DLL в МРВ ТМ6
Romсheg
unregistered



Icon 6 отправлено / posted            Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В ходе разработки проекта возникла потребность передачи строковых данных из внешней DLL в узлы под управлением МРВ ТМ6. Так как при подключении внешних библиотек в программах ТМ6 не предусмотрена возможность вызова функций, возвращающих строку, а также то, что ТМ6 - это Unicode система. Задачка не совсем тривиальная. Рецепт ее решения, надеюсь, пригодится и другим разработчикам.

В DLL на С++ пишем нашу функцию, возвращающую строку текста в аргумент:
code:
#include <wchar.h>

extern "C" __declspec(dllexport) void GetStr(wchar_t *s1)
{
wchar_t *str=L"строка";
wcscpy((wchar_t *)s1, str);
}

В проекте ТМ6 при объявлении этой функции в описании аргумента функции необходимо указать параметр "Тип данных" в STRING, а "Указатель" в Да. При правильном определении в дереве структуры программы это должно получиться как:
code:
void cdecl GetStr(string* s1)

Все - теперь запускаем программу и при вызове этой функции с переменной типа string получаем в эту переменную строку "строка". [fun / веселый]
IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2