Незнал как иначе назвать тему...
Хочу сделать программу в labview, хоть и знаю что это графический "язык программирования", всеже я задался вопросом возможности написании 99% всего кода программы на языке c++, посредством библиотеки из c++(своей собственной).
И так вот в чем вопрос:
1)Как нужно сделать библиотеку написанную на c++, рабочей на Labview?
2)Как её использовать в Labview? (как например в функции библиотеки послать x и y, а на выходе принять новую таблицу массивов)
Интерпретация кода программы в код С++
-
Jakob Brontfeyn
- expert
- Сообщения: 1729
- Зарегистрирован: 28 фев 2008, 11:01
- Награды: 6
- Благодарил (а): 1 раз
- Контактная информация:
Re: Интерпретация кода программы в код С++
Спасибо тебе Jakob Brontfeyn!
Для всех тех кто в танке объясняю пример коротко и ясно(как я понял)(поправьте если неправильно)
Пример dll библиотеки на c++ (visual studio)
из примера видно, что чтобы dll работала в , надо присоеденить: #define EXP extern "C" __declspec (dllexport) в заголовок
А новые функции создавать так: EXP void CALLBACK xxx()
Второй этап:
Для всех тех кто в танке объясняю пример коротко и ясно(как я понял)(поправьте если неправильно)
Пример dll библиотеки на c++ (visual studio)
Код: Выделить всё
#include "stdafx.h"
#define EXP extern "C" __declspec (dllexport)
EXP int CALLBACK scet(int x, int y)
{
return x+y;
}
А новые функции создавать так: EXP void CALLBACK xxx()
Второй этап:
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Интерпретация кода программы в код С++
В целом вроде верно, только вот в C++ вы объявили функцию как cdecl, а в вызываете как stdcall. И необязательно делать #define для объявления функции, можно и перед её названием поставить. А вообще, посмотрите вот эту литературу, там есть масса интересных и полезных вещей.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Интерпретация кода программы в код С++
Насколько код на С++ на самом деле ++? плохо переваривает C++ классы, нужно писать обертку
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Интерпретация кода программы в код С++
Я бы сказал, что он их вообще не переваривает, потому что даже функцию с thiscall-соглашением не вызвать из без wrapper'а, а если работать с классами, то придется постоянно обращаться к самописным библиотекам, даже при использовании классов не напрямую, а по указателям. Я как-то делал обертку для DLL, написанной на C++, в Delphi. Так, кроме конструкторов-деструкторов и обычных функций постоянно приходилось пользоваться ассемблерными вставками для получения/передачи указателя на this. Вообще, не знаю, почему NI до сих пор не смогли внедрить классы в , ведь они не так сильно отличаются от того же typedef struct.mzu2006 писал(а): плохо переваривает C++ классы
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Интерпретация кода программы в код С++
Бинарная реализация классов в C++ не специфицирована стандартом. Т.е. для бинарной совместимости необходимо либо: ориентироватьтся на конкретный компилятор C++, либо переходить к таким реализациям объектности, где бинарная совместимость гарантируется стандартом. Например, COM. Поддержка COM объектов в LabVIEW реализованаdadreamer писал(а):Вообще, не знаю, почему NI до сих пор не смогли внедрить классы в , ведь они не так сильно отличаются от того же typedef struct.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение