c++ - .exe 与 .dll 作为一个程序的模块

标签 c++ module

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

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

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

提前致谢。

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

最佳答案

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

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

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

关于c++ - .exe 与 .dll 作为一个程序的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291406/

相关文章:

node.js - 尝试从 git 安装 npm 模块时出错

php - 德鲁帕尔 : module update

node.js - 如何使用expressJS创建nodeJS模块

C++:函数模板指针的 std::vector

c++ - 如何使用 g++ 编译器链接库?

C++ 函数总是返回相同的指针

F# 检查算术范围

java - 如何分别打印给定数字的每个数字?

c++ 抽象基类私有(private)成员

c++ - 嵌套 for 循环 C++ 中的运行时错误