从exe文件中删除标准C ++库

时间:2017-06-11 00:00:01

标签: c++ windows gcc

我使用Mingw并尝试从我的exe文件中删除标准库的代码 - g ++ -nostdlib -o main.exe main.cpp -luser32。是的,它有效,但第一个功能总是成为切入点。好的,我只需要直接设置条目符号 - g ++ -nostdlib -e WinMain -o main.exe main.cpp -luser32。现在我得到“警告:找不到输入符号WinMain;默认为00401000”。在此之后,第一个功能再次成为切入点。然后,我尝试将nostdlib更改为nodefaultlibs并获取大量关于“未定义引用'某个对象'”的错误消息。

问题:那么,我如何删除标准库代码并设置程序入口点?

PS g ++ --version - g ++(i686-posix-dwarf-rev0,由MinGW-W64项目构建)5.3.0。 main.cpp中:

#include<windows.h>

//this function called instead of WinMain
int OtherFunction()
{
    MessageBoxA(NULL,"OtherFunction","OtherFunction",MB_OK);
    return 0;
}

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
    MessageBoxA(NULL,"WinMain","WinMain",MB_OK);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

extern "C" void WinMain()
{
  // Code here
  ExitProcess(0);
}

并与-e _WinMain

相关联