ERROR C1189 - MFC Projekt in VS 2010 Professional
-
Hallo!
Da ich seit einigen Tagen in MFC programmiere und nun Visual Studio 2010 Professional erhalten habe, wollte ich natürlich auch hier MFC-Projekte öffnen und kompilieren. Da ich nicht mit dem mitgelieferten MFC-Assistenten Arbeiten möchte und dies in meinem Lehrbuch(Programming Windows with MFC 2nd Edition) auch nicht so vorgesehen ist, habe ich ein normales Win32 Projekt eröffnet, da, wenn ich ein MFC spezifisches Projekt öffne, ich schon sehr viele vorgefertigten Dateien des Assistenten erhalte. Will ich nun folgenden Code eingeben:
Hallo.h
#include<afxwin.h> class CMyApp : public CWinApp { public: virtual BOOL InitInstance (); }; class CMainWindow : public CFrameWnd { public: CMainWindow (); protected: afx_msg void OnPaint (); DECLARE_MESSAGE_MAP () };
Hello.cpp
#include "Hello.h" CMyApp myApp; ///////////////////////////////////////////////////////////////////////// // CMyApp member functions BOOL CMyApp::InitInstance () { m_pMainWnd = new CMainWindow; m_pMainWnd->ShowWindow (m_nCmdShow); m_pMainWnd->UpdateWindow (); return TRUE; } ///////////////////////////////////////////////////////////////////////// // CMainWindow message map and member functions BEGIN_MESSAGE_MAP (CMainWindow, CFrameWnd) ON_WM_PAINT () END_MESSAGE_MAP () CMainWindow::CMainWindow () { Create (NULL, _T ("The Hello Application")); } void CMainWindow::OnPaint () { CPaintDC dc (this); CRect rect; GetClientRect (&rect); dc.DrawText (_T ("Hello, MFC"), -1, &rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER); }
erhalte ich diese Fehlermeldung:
Error 1 error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afx.h 24
Gebe ich den selben Code in ein geleertes MFC spezifisches Projekt erhalte ich folgende Fehler:
Error 2 error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "StdAfx.h"' to your source? c:\users\**\documents\visual studio 2010\projects\win32\mfc test\mfc test\hello.cpp 41 3 IntelliSense: #error directive: Please use the /MD switch for _AFXDLL builds c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h 81
Adde ich nun stdafx.h und den ganzen Kram erhalte ich diese Fehlermeldungen:
Error 1 error LNK2001: unresolved external symbol "int __cdecl _AfxInitManaged(void)" (?_AfxInitManaged@@YAHXZ) C:\Users\**\Documents\Visual Studio 2010\Projects\Win32\MFC Test\MFC Test\mfcs100ud.lib(nolib.obj) Error 2 error LNK2001: unresolved external symbol "int __cdecl _AfxInitManaged(void)" (?_AfxInitManaged@@YAHXZ) C:\Users\**\Documents\Visual Studio 2010\Projects\Win32\MFC Test\MFC Test\mfcs100ud.lib(stdafx.obj) Error 3 error LNK2001: unresolved external symbol "int __cdecl _AfxInitManaged(void)" (?_AfxInitManaged@@YAHXZ) C:\Users\**\Documents\Visual Studio 2010\Projects\Win32\MFC Test\MFC Test\mfcs100ud.lib(appmodul.obj) Error 4 error LNK1120: 1 unresolved externals C:\Users\**\Documents\Visual Studio 2010\Projects\Win32\MFC Test\Debug\MFC Test.exe 1 5 IntelliSense: #error directive: Please use the /MD switch for _AFXDLL builds c:\program files (x86)\microsoft visual studio 10.0\vc\atlmfc\include\afxver_.h 81
Ich weiß leider nicht mehr weiter und im Netz sind keine brauchbaren Anleitungen für neuere Visual Studio Versionen. Daher meine Frage: könnte mir vielleicht jemand zeigen, wie man in Visual Studio 2010 ein funktionierendes MFC - Projekt erzeugt?
MfG
Walnut_BurlEDIT: Ich habe schon in der MSDN - Library gesucht, jedoch keine Antwort entsprechend der Fehlermeldung erhalten.
-
Alles geklärt!
Ich hatte vergessen die MFC in einer DLL zu nutzen. Dies hatte ich nicht in den Projekteinstellungen angegeben.
Hier ist das noch einmal ausführlich erklärt.