为了好玩,我想创建一个不依赖于CRT的(工作)可执行文件。阅读一些文章后并没那么难,所以我决定:
/* test.c */
int main(){
return 0;
}
...
/* Compiling & Linking: */
cl /c /O2 /Ox /Os test.c
link /ENTRY:main /NODEFAULTLIB /SUBSYSTEM:WINDOWS /ALIGN:16 /ignore:4108 test.obj
到目前为止一切顺利,但我希望能够调用Windows API的功能。例如,我应该如何链接以下代码?:
#define UNICODE
#include <windows.h>
int main(){
MessageBox
(NULL, TEXT("Hello Stackoverflow!"), TEXT("Hello Stackoverflow"), MB_OK);
return 0;
}
我阅读了以下文章,但无法提出解决方案: Minicrt,Small Programs,Tiny PE,Techniques for reducing Executable size。
提前致谢:)
答案 0 :(得分:1)
链接user32.lib
link /ENTRY:main /NODEFAULTLIB /SUBSYSTEM:WINDOWS /ALIGN:16 /ignore:4108 test.obj user32.lib
在MSDN中查找该函数所属的库,并链接它。