当我使用VS2013中的C++运行时库的静态链接时,是否有任何方法可以降低构建大小?降低构建大小
我的原始文件只有15kb,但我无法在我的其他电脑上运行它,但没有丢失.dll消息弹出。我决定使用静态链接,现在的大小是〜100kb。
我正在使用Windows.h
标题和WinAPI函数。
当我使用VS2013中的C++运行时库的静态链接时,是否有任何方法可以降低构建大小?降低构建大小
我的原始文件只有15kb,但我无法在我的其他电脑上运行它,但没有丢失.dll消息弹出。我决定使用静态链接,现在的大小是〜100kb。
我正在使用Windows.h
标题和WinAPI函数。
如果你只显示一个消息框,你并不需要链接到任何静态库。
#include <windows.h>
void entry(void) {
MessageBox(NULL, "Hello, World!", "", MB_OK);
ExitProcess(0);
}
编译和链接使用VC++ 2013,用下面的命令行:
CL/O1/GS- hello32.c /链接/ NODEFAULTLIB /条目:进入/子系统:视窗USER32的.lib KERNEL32.LIB
至少对我(与VC++ 2013年)产生的2560个字节的可执行文件(仅依赖核心的Windows DLL,所以它不应该要求任何额外的东西即使是最运行赤裸裸的骨骼系统)。
由于你的主要目的是保持大小的控制,dll
是要走的路。
至于你的失踪dll有关它可以解决。 如果您使用的是标准libary缺失错误,那么在您正在运行应用程序的机器上安装可再发行组件是个好主意。
我想让人们在运行我的程序时不必下载这些麻烦。静态链接只链接必要的库或一切吗? –
然后你不能节省exe的空间! –
如果不使用MFC等,你可以
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
,以减少代码的大小
我不认为这会缩减代码的大小 - 这是一种缩短编译时间的旧的,现在毫无意义的方式:http://blogs.msdn.com/b/oldnewthing/archive/2009/11/30/9929944的.aspx –
是从窗户缺少DLL或您自己的? –
它可能会变得更小,但很难在没有看到源代码的情况下对细节进行猜测。 –
@JerryCoffin这是一个简单的Message Box,上面写着“Hello World”。 –