如何手动导入Windows API函数?

时间:2011-11-03 07:10:39

标签: winapi

为了好玩,我想创建一个不依赖于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;
}

我阅读了以下文章,但无法提出解决方案: MinicrtSmall ProgramsTiny PETechniques for reducing Executable size

提前致谢:)

1 个答案:

答案 0 :(得分:1)

链接user32.lib

link /ENTRY:main /NODEFAULTLIB /SUBSYSTEM:WINDOWS /ALIGN:16 /ignore:4108 test.obj user32.lib

在MSDN中查找该函数所属的库,并链接它。