这是使用的DLL的好办法? (C ++?)

我有运行这样一个系统:

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

等等...

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

如果可以,可能有人点我在正确的方向上使他们的DLL而不改变了很多的代码?

--------------解决方案-------------

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

这似乎是一个不错的DLL教程为Win32。

至于不改变太多的代码,我假设你只是将信息传递给论文潜艇使用的命令行参数。 在这种情况下,只需重命名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版本discrepencies可能导致您解忧等。

这取决于它们是如何经常​​运行。 的是,如果是的过程撕裂升压/拆卸是一个显著成本。

那岂不是更安全的将它们转换为动态链接库,以防止意外运行SUB1和SUB2不带主启动它们的用户?

分类:C# 时间:2015-03-15 人气:0
本文关键词: 性能,C#,DLL
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.560 (s). 10 q(s)