]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix entry point in Unicode build of the MFC sample.
authorVadim Zeitlin <vadim@wxwidgets.org>
Wed, 12 Jan 2011 13:39:16 +0000 (13:39 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Wed, 12 Jan 2011 13:39:16 +0000 (13:39 +0000)
MFC needs the entry point to be wWinMainCRTStartup() in Unicode builds but the
bakefile-generated projects use the default WinMain() so the sample didn't
link in Unicode.

Fix this by providing WinMain() which simply forwards to wWinMainCRTStartup()
as this seems to work for all MSVC/CRT versions.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

samples/mfc/mfctest.cpp

index 69146772d35ebc60a49d5b95841cfe5deb1849c9..a67b88d026479ce8addc4f638ac9eb250608ca6b 100644 (file)
 //     first: mfc[version][u]d.lib
 //     -  [version] -> 42 or 70 or 80 etc
 //     -  u if using Unicode
-//
-// (4) Unicode builds may produce the linker error "unresolved external symbol _WinMain@16".
-//     MFC requires you to manually add the Unicode entry point to the linker settings,
-//     Entry point symbol -> wWinMainCRTStartup
 
 #include "stdafx.h"
 
@@ -128,6 +124,18 @@ DECLARE_APP(MyApp)
 // notice use of IMPLEMENT_APP_NO_MAIN() instead of the usual IMPLEMENT_APP!
 IMPLEMENT_APP_NO_MAIN(MyApp)
 
+#ifdef _UNICODE
+// In Unicode build MFC normally requires to manually change the entry point to
+// wWinMainCRTStartup() but to avoid having to modify the project options to do
+// it we provide an adapter for it.
+extern "C" int wWinMainCRTStartup();
+
+int WINAPI WinMain(HINSTANCE, HINSTANCE, char *, int)
+{
+    wWinMainCRTStartup();
+}
+#endif // _UNICODE
+
 CMainWindow::CMainWindow()
 {
     LoadAccelTable( wxT("MainAccelTable") );