这是使用的DLL的好方法? (C ++?)(Is this a good way to use

2019-09-17 15:01发布

我有一个运行这样一个系统:

MAIN.EXE运行sub.exe运行sub2.exe

等。等..

那么,这将是更有效地改变子和SUB2到DLL的任何更快吗?

如果它愿意,可能有人点我在正确的方向为使它们的dll不改变很多代码?

Answer 1:

DLL文件肯定会比单独的可执行文件更快。 但让他们分开允许更多的灵活性和重用(认为的Unix shell脚本)。

这似乎是Win32的一个很好的DLL教程。

至于不改变代码太多,我假设你只是将信息传递给论文与潜艇的命令行参数。 在这种情况下,只需重命名main功能,从DLL导出它们,并调用这些更名为“ main由主程序”功能。



Answer 2:

DLL真的是太可执行文件。 它们符合以覆盖多个常见的文件扩展名的窗口,例如.exe,.dll文件,.OCX的PE标准...

当您启动2个可执行文件,他们分别获得了自己的地址空间,自己的记忆和这样。 然而,当你加载一个可执行文件和一个DLL,DLL的是让他们分享很多东西装入可执行文件的进程空间。

现在,这取决于你的可执行文件3如何沟通在一起(如果他们甚至一起通信),您可能需要重写一些代码。 基本上有DLL文件一般的方法是简单地从你的程序中调用DLL函数。 这通常是比进程间通信更简单



Answer 3:

如果你的程序(MAIN.EXE)仅仅是开始,真正有什么用它的程序,继续做你正在做的事情。 如果sub.exe和sub2.exe含有MAIN.EXE将受益于功能,将它们转换为动态链接库,所以MAIN.EXE可以调用的函数在其中。

当谈到效率,这取决于大sub.exe和sub2.exe如何。 请记住,加载一个dll也意味着开销。



Answer 4:

有几个因素要考虑。 对于初学者来说,你多久运行序列,多长时间是由其他可执行文件执行的工作吗? 如果你不给他们打电话,很多时候,他们执行的工作不是很短,加载时间本身变得微不足道。 在这种情况下,我会说去与任何适合的其他需求。 如果OTOH,你就打电话给他们相当多,我说让他们的DLL。 加载它们一次,并从该点以后每次调用是一个本地函数的调用一样快。

作为一个exe转换为DLL - 它不应该很复杂,但对于需要特殊照顾的dll工作时,有几点:使用的DllMain初始化有一定的局限性常规的主没有(同步问题); 你必须记住一个dll股的EXE地址空间; CRT的版本差异过大可能导致您解忧等 。



Answer 5:

这取决于它们运行多久。 那如果是进程的撕裂向上/拆除是显著成本。



Answer 6:

那岂不是更安全的把它们转换成DLL的,以防止意外运行SUB1或者SUB2无主开始它们的用户?



文章来源: Is this a good way to use dlls? (C++?)