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

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version » Корректный вызов функции из внешний библиотеки

   
Автор / Author Тема / Topic: Корректный вызов функции из внешний библиотеки
DRPR
Junior Member / Новичок
Участник № / Member № 2259


Icon 1 отправлено / posted      Профиль для / Profile for DRPR           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Цель следующая: массив, объявленный в программе Trace Mode как глобальная переменная, необходимо для некоторых преобразований передать как аргумент функции, содержащейся во внешней библиотеке.
Что было сделано:
была создана в Visual C++ 6.0 библиотека mydll.dll с функцией вида
extern "C" __declspec(dllexport) void __stdcall function(double *in){}
В программе в Trace Mode эта функция добавлена как функция внешней библиотеки. В качестве аргумента этой функции в редакторе аргументов по идее надо написать указатель на массив in, где массив in уже описан как глобальная переменная. При попытке написать в редакторе аргументов внешней функции параметры:
Имя|тип данных|указатель|Комментарий
in double да //массив данных
выдаётся ошибка аргумента при компиляции в обращении function(in).
Если "да" изменить на "нет", то есть если этот аргумент не считать указателем, то компиляция проходит успешно, с нулём ошибок и предупреждений. Но в этом случае при выполнении программы (нажатии F5) выдаётся сообщение, что в tmdevenv.exe обнаружена ошибка и приложение будет закрыто.
Вопросы: Как корректно задать обращение к функции внешней библиотеки и описать её аргументы для данного примера? Вобще, реализуема ли задача преобразования массива посредством внешней функции в Trace Mode 6?

Сообщения / Posts 4 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
АдАстра. Техподдержка
Administrator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for АдАстра. Техподдержка           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В языке ST нельзя передавать массивы.
Сообщения / Posts 17114 | Из / From: Россия  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DRPR
Junior Member / Новичок
Участник № / Member № 2259


Icon 1 отправлено / posted      Профиль для / Profile for DRPR           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Хм... честно говоря, в справке этого факта по моему нет... Ведь внутри самого языка ST массивы передавать можно, и в справке даются примеры как это делать...
Спасибо за ответ.

Сообщения / Posts 4 | Из / From: Russia  |  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