轻松转换win程序和控制台程序

来源:互联网 发布:apache开源项目有哪些 编辑:程序博客网 时间:2024/04/26 07:11

其实,一个程序要将其编译成win程序或控制台程序(对应WinMain或main),在vs08中,只需改动一个选项,

项目->属性->Linker->子系统  改为windows就是win程序,相应的会寻找WinMain函数,改为Console就是控制台的,寻找main函数。

 

所以一个程序文件中完全可以同时出现WinMain函数和main函数,根据编译对应的子系统选项来连接。

//
// WinMain
//
int WINAPI WinMain(HINSTANCE hinstance,
                   HINSTANCE prevInstance,
                   PSTR cmdLine,
                   int showCmd)

{
    if(!d3d::InitD3D(hinstance,
        640, 480, true, D3DDEVTYPE_HAL, &Device))
    {
        ::MessageBox(0, _T("InitD3D() - FAILED"), 0, 0);
        return 0;
    }
       
    if(!Setup())
    {
        ::MessageBox(0, _T("Setup() - FAILED"), 0, 0);
        return 0;
    }

    d3d::EnterMsgLoop( Display );

    Cleanup();

    Device->Release();

    return 0;
}

//main
int main()
{
    printf("hello, world");
}

 

另外一个不同的地方是C/C++的预处理器定义:

 

若是控制台程序:WIN32;_DEBUG;_CONSOLE

win程序:WIN32;_DEBUG;_WINDOWS

 

两者显然是不同的,对于不同类型的程序,c/c++预处理器肯定会有不同的设置方式,win程序的处理方式肯定更加的多样化,所以,最好也将其进行更换。

原创粉丝点击