.exe vs .dll作为一个程序的模块

时间:2012-07-02 09:57:37

标签: c++ module

例如,我们有一个用C / C ++编写的图像处理程序接口。我们有过滤,模糊,去模糊,调整大小,压缩等所有其他需要大量计算的东西。你会如何设计这样的应用程序模块 - 如.exe接口+ .exe模块组在彼此之间抛出文件或者.exe接口+ .dll与所需的方法?

每种方法的优点和缺点是什么?

如果我使用.dll,在什么情况下我将被迫重新编译接口的.exe? 让我们建议必须给模块的数据大小足够大,以便在某些执行地点将其写入磁盘。

提前致谢。

P.S。图像处理就是一个例子,任何具有这种模块的系统都可以成为问题所在。

3 个答案:

答案 0 :(得分:1)

这取决于系统的耦合程度以及性能问题。

  1. 如果您想使用来自不同供应商的代码,可以选择具有已知格式的共享文件。

  2. 如果你需要每秒处理数千张图像,那么DLL可能会更好。

答案 1 :(得分:1)

我会使用DLL,这就是他们的目的。在重新编译方面:如果更改EXE和DLL之间的二进制接口,则必须重新编译DLL!

如果您使用DLL并希望独立于编译器,则必须定义STABLE ABI。这可以用C +一些typedef(char的签名,bool的大小,......)来完成,或类似于COM处理它的方式。

我个人会选择第二条路线 - 知道定义一个好的二元稳定ABI需要多长时间......

答案 2 :(得分:0)

我会使用所需方法的DLL。 DLL只是为那项工作而设计的。