我有一个运行这样一个系统:
MAIN.EXE运行sub.exe运行sub2.exe
等。等..
那么,这将是更有效地改变子和SUB2到DLL的任何更快吗?
如果它愿意,可能有人点我在正确的方向为使它们的dll不改变很多代码?
我有一个运行这样一个系统:
MAIN.EXE运行sub.exe运行sub2.exe
等。等..
那么,这将是更有效地改变子和SUB2到DLL的任何更快吗?
如果它愿意,可能有人点我在正确的方向为使它们的dll不改变很多代码?
DLL文件肯定会比单独的可执行文件更快。 但让他们分开允许更多的灵活性和重用(认为的Unix shell脚本)。
这似乎是Win32的一个很好的DLL教程。
至于不改变代码太多,我假设你只是将信息传递给论文与潜艇的命令行参数。 在这种情况下,只需重命名main
功能,从DLL导出它们,并调用这些更名为“ main
由主程序”功能。
DLL真的是太可执行文件。 它们符合以覆盖多个常见的文件扩展名的窗口,例如.exe,.dll文件,.OCX的PE标准...
当您启动2个可执行文件,他们分别获得了自己的地址空间,自己的记忆和这样。 然而,当你加载一个可执行文件和一个DLL,DLL的是让他们分享很多东西装入可执行文件的进程空间。
现在,这取决于你的可执行文件3如何沟通在一起(如果他们甚至一起通信),您可能需要重写一些代码。 基本上有DLL文件一般的方法是简单地从你的程序中调用DLL函数。 这通常是比进程间通信更简单
如果你的程序(MAIN.EXE)仅仅是开始,真正有什么用它的程序,继续做你正在做的事情。 如果sub.exe和sub2.exe含有MAIN.EXE将受益于功能,将它们转换为动态链接库,所以MAIN.EXE可以调用的函数在其中。
当谈到效率,这取决于大sub.exe和sub2.exe如何。 请记住,加载一个dll也意味着开销。
有几个因素要考虑。 对于初学者来说,你多久运行序列,多长时间是由其他可执行文件执行的工作吗? 如果你不给他们打电话,很多时候,他们执行的工作不是很短,加载时间本身变得微不足道。 在这种情况下,我会说去与任何适合的其他需求。 如果OTOH,你就打电话给他们相当多,我说让他们的DLL。 加载它们一次,并从该点以后每次调用是一个本地函数的调用一样快。
作为一个exe转换为DLL - 它不应该很复杂,但对于需要特殊照顾的dll工作时,有几点:使用的DllMain初始化有一定的局限性常规的主没有(同步问题); 你必须记住一个dll股的EXE地址空间; CRT的版本差异过大可能导致您解忧等 。
这取决于它们运行多久。 那如果是进程的撕裂向上/拆除是显著成本。
那岂不是更安全的把它们转换成DLL的,以防止意外运行SUB1或者SUB2无主开始它们的用户?