【发布时间】:2021-05-10 15:16:45
【问题描述】:
我有一个大程序 A,它有时会调用我的(大)程序 B。程序 B 在程序 A 中只被调用一次。此时程序 B 是一个可执行程序(B.exe - 编译的 C++ 代码) .
有人建议使用程序 B 的 DLL,而不是使用可执行文件。
- 使用 DLL 是否有任何优势(如安全性、大小等)
- 从我的源代码创建 DLL 是否容易(我使用 Qt 创建器)
【问题讨论】:
我有一个大程序 A,它有时会调用我的(大)程序 B。程序 B 在程序 A 中只被调用一次。此时程序 B 是一个可执行程序(B.exe - 编译的 C++ 代码) .
有人建议使用程序 B 的 DLL,而不是使用可执行文件。
【问题讨论】:
使用 dll 有什么好处(例如安全性、大小等)
没有。事实上,如果您正在查看安全性、大小等问题,使用 DLL 会使事情变得更糟。当你加载一个 DLL 时,一切都发生在加载进程的地址空间内。因此,DLL 中的任何错误都会直接影响程序的其余部分。 DLL 代码崩溃,会导致整个程序崩溃。
从我的源代码创建 dll 是否容易(我使用 Qt 创建器)
是的。但对我来说,您的特定用例似乎几乎没有任何好处。事实上,对于很少使用的代码路径,我强烈建议将其放入单独的进程中(即将其链接到 .EXE)。
顺便说一句:.dll 和 .exe 完全相同。您可以像加载 DLL 一样加载 .exe;给它一个DllMain,你可以使用它!当然,使用LoadLibrary 加载 EXE 不会使其在单独的进程中运行,而是将所有错误导入到您的主程序中。
【讨论】: