2012-07-02 2 views
0

Например, у нас есть интерфейс программы для обработки изображений, написанный на C/C++. И у нас есть такие вещи, как фильтры, размытие, затухание, изменение размера, сжатие и все прочее, что требует много вычислений. Как бы вы создали такие модули приложений - как .exe-интерфейс + группа модулей .exe, метали файлы между собой или как .exe-интерфейс + .dll с необходимыми методами?.exe vs .dll как модули одной программы

Каковы преимущества и недостатки каждого метода?

Если я использую .dlls, в каких случаях я буду вынужден перекомпилировать интерфейс .exe? Предположим, что размер данных, который должен быть предоставлен модулям, достаточно велик, чтобы предпочесть записывать его на диск в некоторых местах исполнения.

Заранее спасибо.

P.S. Обработка изображений - это просто пример, любая система с такими модулями может быть местом в этом вопросе.

ответ

1

Я бы использовал DLL, вот для чего они предназначены. Что касается перекомпиляции: вам придется перекомпилировать свои DLL, если вы измените двоичный интерфейс между EXE и DLL!

Если вы идете для DLL и хотите быть независимым от компилятора, вам нужно будет определить STABLE ABI. Это можно сделать в терминах C + некоторых typedefs (подпись char, размер bool, ...) или сродни тому, как COM обрабатывает это.

Я лично пошел бы на второй маршрут - зная, сколько времени требуется для определения хорошей бинарной стабильной ABI ...

0

Я бы использовал DLL-файлы с необходимыми методами. DLL предназначены только для этой работы.

1

Это зависит от того, насколько жестко связана ваша система, а также от проблем с производительностью.

  1. Если вы хотите использовать код у разных поставщиков, рекомендуется использовать общие файлы с известным форматом.

  2. Если вам нужно обработать тысячи изображений в секунду, тогда библиотеки DLL могут быть лучше.

Смежные вопросы