|Important||This document may not represent best practices for current development, links to downloads and other resources may no longer be valid. Current recommended version can be found here. ArchiveDisclaimer|
/ENTRY (Entry-Point Symbol)
The /ENTRY option specifies an entry point function as the starting address for an .exe file or DLL.
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
A DLL; calls DllMain, which must be defined with __stdcall, if it exists
The functions main, WinMain, and DllMain are the three forms of the user-defined entry point.
When creating a managed image, the function specified with /ENTRY must have a signature of (LPVOID var1, DWORD var2, LPVOID var3).
For information on how to define your own DllMain entry point, see.
To set this linker option in the Visual Studio development environment
Open the project's Property Pages dialog box. For details, see Setting Visual C++ Project Properties.
Click the Linker folder.
Click the Advanced property page.
Modify the Entry Point property.
To set this linker option programmatically