Как добавить простой API к моему приложению C++ для доступа LabView?

Попробуйте этот запрос, надеюсь, он сработает.

select count(pi.pic_id),pr.* from photo_db pi where pi.pic_sid in (select pr.prd_sid from products_db pr ) group by pi.pic_id
6
задан Jon Seigel 20 March 2010 в 20:32
поделиться

5 ответов

Вы на правильном пути с DLL. Реальный прием, это походит, будет решать, какое межпроцессное взаимодействие (IPC) Вы хотите использовать. Опции: сокеты, каналы, общая память, объекты синхронизации (события, и т.д.), файлы, реестр, и т.д.

После того как Вы решаете, что, затем реализуйте слушателя в своем исполняемом файле для ожидания входящих сообщений IPC из любого программного обеспечения, использует DLL.

Что касается API, можно сохранить это простым точно так же, как Вы желали. Имейте DLL, выставляют Ваши 4 или 5 функций (удостоверьтесь, что Вы только используете собственные типы данных, как символ* и долго, для предотвращения граничных проблем модуля), и затем они будут использовать механизм IPC для общения с приложением выполнения.

6
ответ дан 8 December 2019 в 18:43
поделиться

Вещи, которые запускаются простой как это, имеют привычку к росту со временем, таким образом, можно быть более обеспеченным выполнением немного большего количества работы впереди и использованием техники, которая вырастет с Вами.

Реализация COM-интерфейса к Вашей программе дала бы клиентам, партия свободы в том, как интерфейс с ним, и Вы не должны были бы волноваться о механике IPC, и т.д. так как COM разработан для сокрытия всего это от Вас.

В будущем COM уже имеет, хорошо определяют идиомы для вещей как события, которые являются хорошо поддержкой языками сценариев, и т.д. должны Вы нуждаться в них.

Обновление: существует много способов реализовать COM. Можно создать его из первых принципалов с руководством хорошей книги COM или использованием платформы как ATL для сохранения части шаблона. Существует много хороших образцов, например, видит MSDN.

2
ответ дан 8 December 2019 в 18:43
поделиться

Большое преимущество COM состоит в том, что Вам не нужен DLL! Ваше приложение всегда работало бы, Вы говорите. Это означает, что может действовать как создатель COM-объекта ("локальный сервер").

Если кто-то хотел бы"stdcall"DLL вместо этого, Вы могли дать им DLL, который внутренне просто переводит все вызовы к COM-интерфейсу. Запись его была бы довольно тривиальна. У Вас только есть 5 функций, Вы говорите. Это предлагает, чтобы у Вас был один COM-интерфейс с теми 5 методами. Когда обертка загрузки DLL, это просит, чтобы Ваш EXE создал свой COM-объект. DLL в свою очередь выставляет 5 stdcall методов, каждый из которых называет один метод на COM-объекте.

2
ответ дан 8 December 2019 в 18:43
поделиться

Здесь существует связанный вопрос. Я не хочу заканчивать с чем-то, что LabView-конкретно, и кажется, что LabView может получить доступ к dlls, если они используют stdcall. dll как это был бы вызываемым от VB или другого программного обеспечения Windows также, которое является тем, для чего я стреляю.

Я не уверен в, это - способность получить доступ к COM-интерфейсу, но ценило бы еще некоторую деталь о том, на что это будет похоже для моего приложения.

0
ответ дан 8 December 2019 в 18:43
поделиться

Вы могли использовать dll. Я рассмотрел бы это. Но я также рассмотрел бы сделать на скорую руку простой находящийся в http API, предпочтительно УСПОКОИТЕЛЬНЫЙ.

Преимущества: Легкий к порту. Может записать клиентское приложение из любого языка тривиально. Может работать через сеть. Тестирование становится легче (используйте язык сценариев или Ваш браузер).

Недостатки: Производительность будет медленнее. Значительно больше инфраструктуры для установки его в C++. Я не уверен, может ли LabView выполнить http вызовы.

Что-то как:

http://xxx/data [ДОБИРАЕТСЯ, возможно, POST для тестирования]

http://xxx/data/start [СООБЩЕНИЕ]

http://xxx/data/stop [СООБЩЕНИЕ]

http://xxx/data/parameters [СООБЩЕНИЕ]

Учитывая Ваши требования это может быть немного излишество, но затем возможно, нет. Много приложений я продолжил работать, должны были быть портированы и были бы более быстрыми, чтобы расшириться, если мы, возможно, использовали более быстрый dev язык, чтобы протестировать и расширить его.

2
ответ дан 8 December 2019 в 18:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: