使用 exe 或 DLL 从另一个程序调用程序
Using exe or DLL for calling program from another program
我有一个大程序 A,它有时会调用我的(大)程序 B。程序 B 在程序 A 中只被调用一次。目前程序 B 是一个可执行程序(B.exe - 已编译C++-代码)。
有人建议使用程序 B 的 DLL 而不是使用可执行文件。
- 使用 DLL 有什么优势(如安全性、大小等)
- 从我的源代码创建 DLL 容易吗(我使用 Qt creator)
Are there any advantages in using a dll ( like security, size, etc)
没有。事实上,如果您正在考虑安全性、大小等问题,使用 DLL 会使事情变得更糟。加载 DLL 时,一切都发生在加载进程的地址 space 内。因此,DLL 中的任何错误都会直接影响程序的其余部分。 DLL代码中的一个崩溃,将导致整个程序崩溃。
Is it easy to create a dll from my source-code ( I use Qt creator)
是的。但对我来说,您的特定用例似乎几乎没有任何好处。事实上,对于很少使用的代码路径,我宁愿强烈建议将其放入一个单独的进程中(即 link 将其放入 .EXE)。
顺便说一句:.dll
和 .exe
完全一样。您可以加载一个 .exe
就好像它是一个 DLL;给它一个DllMain
,你可以用任何一种方式使用它!当然,使用 LoadLibrary
加载 EXE 不会使其成为单独的进程 运行,而是将所有错误导入您的主程序。
我有一个大程序 A,它有时会调用我的(大)程序 B。程序 B 在程序 A 中只被调用一次。目前程序 B 是一个可执行程序(B.exe - 已编译C++-代码)。
有人建议使用程序 B 的 DLL 而不是使用可执行文件。
- 使用 DLL 有什么优势(如安全性、大小等)
- 从我的源代码创建 DLL 容易吗(我使用 Qt creator)
Are there any advantages in using a dll ( like security, size, etc)
没有。事实上,如果您正在考虑安全性、大小等问题,使用 DLL 会使事情变得更糟。加载 DLL 时,一切都发生在加载进程的地址 space 内。因此,DLL 中的任何错误都会直接影响程序的其余部分。 DLL代码中的一个崩溃,将导致整个程序崩溃。
Is it easy to create a dll from my source-code ( I use Qt creator)
是的。但对我来说,您的特定用例似乎几乎没有任何好处。事实上,对于很少使用的代码路径,我宁愿强烈建议将其放入一个单独的进程中(即 link 将其放入 .EXE)。
顺便说一句:.dll
和 .exe
完全一样。您可以加载一个 .exe
就好像它是一个 DLL;给它一个DllMain
,你可以用任何一种方式使用它!当然,使用 LoadLibrary
加载 EXE 不会使其成为单独的进程 运行,而是将所有错误导入您的主程序。