2017-01-05 94 views
0

我正在为一个客户端项目和MDd代码生成选项(动态链接Visual Studio DLL)的文件大小约为25kb。C++ Visual Studio如何知道需要哪些依赖关系

当我做MTd代码生成(静态链接Visual Studio DLL的)时,文件大小大约725kb。

如何才能找出究竟需要哪个DLL,并手动静态链接它们,以便我的文件大小不像725kb那么大,但仍能够在不需要Visual Studio运行时DLL的情况下运行?

+0

它没有必要你可以静态链接,这取决于你的工件是否有静态版本 –

+0

Visual Studio会比手动尝试做这种链接更正确。无论如何,你可以使用[Dependency Walker](http://www.dependencywalker.com/)来确定依赖关系。 – sameerkn

+0

因此,通过依赖walker运行静态链接的版本,然后手动添加这些libs/dll的解决方案? – mocode9

回答

1

编写链接器的人不是完整的白痴。如果您的可执行文件包含725K,那是因为您(直接或间接)在您的可执行文件中使用了725K的代码。

虽然有一个小细节需要考虑。 “MDd”和“MTd”听起来很像你在可执行文件中包含调试信息。如果是这种情况,考虑删除调试信息的可能性。这可以(通常会)大幅减少可执行文件的大小。

如果你想在它上面工作,你可以减小尺寸的机会相当公平,但它不会试图更好地完成链接器的工作。这将通过重写您的代码,因此它不依赖于多少外部代码。这可能不是一项完全无关紧要的任务。你必须问自己是否值得节省500Kb。有一段时间(30年前)可能不会有太多的问题。现在,放一个或两个小时节约500K听起来可疑(至少在大多数情况下)。

为什么725K是一个问题?你需要将你的可执行文件放在一张360K的软盘上吗?


1.受损幽默隐藏式字幕:是的,我知道360K软盘是彻底过时。

+0

我将切换到发布模式。但是我仍然看不到50%以上的顶峰没有?我的东西是使用DLL的时候把它缩小到了25kb,但是当使用静态链接的时候,它的大小是原来的25倍。我只是好奇,是否有可能将这种急剧增加减少一半或更多。希望发布版本可以做到这一点。在我看来,我可以不在乎文件大小,但客户端请求将它保持在最低限度。 – mocode9

+0

切换到发布模式从725到75kb好的建议:) – mocode9

相关问题