Podczas tworzenia nowej aplikacji MFC najprostszej w programie Visual Studio 2012 i ustawiania jej statycznego łączenia z MFC, łączenie kończy się niepowodzeniem.Błędy łącza w niezmodyfikowanym szablonie MFC programu Visual Studio 2012 podczas statycznego łączenia MFC
Oto gallery of 7 screenshots począwszy od utworzenia projektu przez kreatora, aż do budynku (w wyniku błędu linkera). Nie dokonano żadnej edycji źródła między.
Stan dzienniki błędów:
1>------ Build started: Project: Test, Configuration: Debug Win32 ------
1> stdafx.cpp
1> TestDlg.cpp
1> Test.cpp
1> Generating Code...
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "void __cdecl AfxRegisterMFCCtrlClasses(void)" ([email protected]@YAXXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)" ([email protected]@@[email protected]@@Z) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "public: int __thiscall CMFCControlContainer::SubclassDlgControls(void)" ([email protected]@@QAEHXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>C:\Users\XXXXXXXX\Documents\Visual Studio 2012\Projects\Test\Debug\Test.exe : fatal error LNK1169: one or more multiply defined symbols found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Czy to tylko ja? Czy masz sugestię, jak rozwiązać ten problem?
Gdybym musiał zaryzykować przypuszczenie, powiedziałbym, że czarodziej jest zepsuty. Jeśli łączysz się ze statycznymi MFC i CRT, to [auto-magic setup z afx.h] (http://msdn.microsoft.com/en-us/library/bx5yfk7t.aspx) powinien zająć się tym dla ciebie . Zakładając, że kompilujesz się przy pomocy Unicode (wydaje się, że tak czy owak, a kto nie ma tych dni?), Poprawną biblioteką wydaje się być 'uafxcwd.lib' dla statycznego-unicode-debugowania. Albo druga lib nie powinna w ogóle istnieć, albo kolejność linkerów jest zła. Byłbym ciekawy, co się stanie, jeśli wyłączysz * wyłączenie * Suppport i Unicode Unicode - wszystko po zdmuchnięciu plików PCH. – WhozCraig
Myślę, że powinieneś zgłosić to firmie Microsoft jako błąd. Myślę, że możesz to zrobić bezpośrednio z menu Pomoc w VS 2012. Następnie usuń wszystkie biblioteki, które wydają się fałszywe jak 'afxnmcdd.lib' z twoich opcji linkera, i po prostu dodaj ponownie' uafxcwd.lib'. Może dodać '/ NODEFAULTLIBS' –
@ warren-p Zgadzam się. Zdecydowanie to zrobię, aby uratować innym ból głowy śledzenia tego problemu. Mam nadzieję, że (?) To prawdziwy błąd, a nie coś konkretnego dla mojej konfiguracji. – Paul