例如,我们有一个用C / C ++编写的图像处理程序接口。我们有过滤,模糊,去模糊,调整大小,压缩等所有其他需要大量计算的东西。你会如何设计这样的应用程序模块 - 如.exe接口+ .exe模块组在彼此之间抛出文件或者.exe接口+ .dll与所需的方法?
每种方法的优点和缺点是什么?
如果我使用.dll,在什么情况下我将被迫重新编译接口的.exe? 让我们建议必须给模块的数据大小足够大,以便在某些执行地点将其写入磁盘。
提前致谢。
P.S。图像处理就是一个例子,任何具有这种模块的系统都可以成为问题所在。
答案 0 :(得分:1)
这取决于系统的耦合程度以及性能问题。
如果您想使用来自不同供应商的代码,可以选择具有已知格式的共享文件。
如果你需要每秒处理数千张图像,那么DLL可能会更好。
答案 1 :(得分:1)
我会使用DLL,这就是他们的目的。在重新编译方面:如果更改EXE和DLL之间的二进制接口,则必须重新编译DLL!
如果您使用DLL并希望独立于编译器,则必须定义STABLE ABI。这可以用C +一些typedef(char的签名,bool的大小,......)来完成,或类似于COM处理它的方式。
我个人会选择第二条路线 - 知道定义一个好的二元稳定ABI需要多长时间......
答案 2 :(得分:0)
我会使用所需方法的DLL。 DLL只是为那项工作而设计的。