2014-01-06 72 views
0

当我使用VS2013中的C++运行时库的静态链接时,是否有任何方法可以降低构建大小?降低构建大小

我的原始文件只有15kb,但我无法在我的其他电脑上运行它,但没有丢失.dll消息弹出。我决定使用静态链接,现在的大小是〜100kb。

我正在使用Windows.h标题和WinAPI函数。

+0

是从窗户缺少DLL或您自己的? –

+0

它可能会变得更小,但很难在没有看到源代码的情况下对细节进行猜测。 –

+0

@JerryCoffin这是一个简单的Message Box,上面写着“Hello World”。 –

回答

1

如果你只显示一个消息框,你并不需要链接到任何静态库。

#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,所以它不应该要求任何额外的东西即使是最运行赤裸裸的骨骼系统)。

1

由于你的主要目的是保持大小的控制,dll是要走的路。

至于你的失踪dll有关它可以解决。 如果您使用的是标准libary缺失错误,那么在您正在运行应用程序的机器上安装可再发行组件是个好主意。

Redistributable for VS2013

+0

我想让人们在运行我的程序时不必下载这些麻烦。静态链接只链接必要的库或一切吗? –

+0

然后你不能节省exe的空间! –

0

如果不使用MFC等,你可以

#define WIN32_LEAN_AND_MEAN 
#include <Windows.h> 

,以减少代码的大小

+0

我不认为这会缩减代码的大小 - 这是一种缩短编译时间的旧的,现在毫无意义的方式:http://blogs.msdn.com/b/oldnewthing/archive/2009/11/30/9929944的.aspx –