0

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

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

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

提前致谢。

PS 图像处理只是一个例子,任何具有此类模块的系统都可以放在问题中。

4

3 回答 3

1

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

  1. 如果您想使用来自不同供应商的代码,则最好使用已知格式的共享文件。

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

于 2012-07-02T10:06:12.987 回答
1

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

如果您选择 DLL 并希望独立于编译器,则必须定义一个 STABLE ABI。这可以通过 C + 一些类型定义(char 的符号,bool 的大小,...)或类似于 COM 处理它的方式来完成。

我个人会选择第二条路线——知道定义一个好的二进制稳定 ABI 需要多少时间......

于 2012-07-02T10:10:02.560 回答
0

我会使用带有所需方法的 DLL。DLL 就是为这项工作而设计的。

于 2012-07-02T09:59:37.933 回答