Home | Overview | How Do I | Linker Options
The Entry-Point Symbol (/ENTRY:function) option sets the starting address for an .EXE file or DLL. (To find this option in the development environment, click Settings on the Project menu. Then click the Link tab, and click Output in the Category box.)
Type a function name in the Entry-Point Symbol text box (or in the function argument on the command line). The function must be defined with the __stdcall calling convention. The parameters and return value must be defined as documented in the Win32 API for WinMain (for an .EXE file) or DllEntryPoint (for a DLL). It is recommended that you let the linker set the entry point so that the C run-time library is initialized correctly, and C++ constructors for static objects are executed.
By default, the starting address is a function name from the C run-time library. The linker selects it according to the attributes of the program, as shown in the following table.
Function name | Default for |
mainCRTStartup (or wmainCRTStartup) | An application using /SUBSYSTEM:CONSOLE; calls main (or wmain) |
WinMainCRTStartup (or wWinMainCRTStartup) | An application using /SUBSYSTEM:WINDOWS; calls WinMain (or wWinMain), which must be defined with __stdcall |
_DllMainCRTStartup | A DLL; calls DllMain, which must be defined with __stdcall, if it exists |
If the /DLL or /SUBSYSTEM option is not specified, the linker selects a subsystem and entry point depending on whether main or WinMain is defined.
The functions main, WinMain, and DllMain are the three forms of the user-defined entry point.