For example, we have an interface of program for image processing written in C/C++. And we have such things as filters, blurring, deblurring, resizing, compressing and all other stuff that takes a lot of computations. How would you design such app modules – as .exe interface + group of .exe modules throwing files between each other or as .exe interface + .dlls with needed methods?
What are advantages and disadvantages of every method?
If I use .dlls, in what cases I will be forced to recompile interface’s .exe?
Let’s suggest that data size that must be given to modules is big enough to prefer to write it on disk in some places of execution.
Thanks in advance.
P.S. Image processing is just the example, any system with such modules can be places in the question.
I’d use DLLs, that’s what they’re intended for. In terms of recompilation: You will have to recompile your DLLs if you change the binary interface between the EXE and the DLL!
If you go for DLLs and want to be compiler independent, you will have to define a STABLE ABI. This can either be done in terms of C + some typedefs (signedness of char, size of bool, …) or akin to how COM handles that.
I personally would go for the second route – knowing how much time it takes to define a good binary stable ABI…