Ошибки ссылки в неизмененном шаблоне Visual Studio 2012 MFC при статической привязке MFC

При создании нового приложения MFC самого простого вида в Visual Studio 2012 и установке статической связи с MFC связывание завершается неудачно.

Вот галерея из 7 скриншотов начиная с создания проекта с помощью мастера, вплоть до здания (что приводит к ошибке компоновщика).
Промежуточное редактирование не было сделано.

Состояние журналов ошибок:

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)" (?AfxRegisterMFCCtrlClasses@@YAXXZ) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)" (?PreUnsubclassControl@CMFCControlContainer@@IAEXPAVCWnd@@@Z) already defined in afxnmcdd.lib(afxctrlcontainer2.obj)
1>uafxcwd.lib(afxctrlcontainer2.obj) : error LNK2005: "public: int __thiscall CMFCControlContainer::SubclassDlgControls(void)" (?SubclassDlgControls@CMFCControlContainer@@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 ==========

Это только у меня так? У вас есть предложение, как решить эту проблему?

5

Решение

У меня такая же проблема, когда я пытаюсь статически связать свой проект вместе.

Как предположил Майкл Барр, все выглядит хорошо после того, как закомментировал строку #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS в stdafx.h.

4

Другие решения

Я сталкивался с той же проблемой. Если вы решили #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS и избавиться от многих накладных расходов MFC, вы также должны быть уверены, что вы изменили базовые классы диалогов, вызовы методов и т. д. CDialogEx в CDialog,

Если вы не измените цвет фона или изображение вашего диалога, вы обнаружите, что CDialogEx все равно довольно бесполезно.

2

После тестирования v100 работает хорошо, а v110 не работает. Попробуйте сообщить MS Connect как эта ссылка: http://connect.microsoft.com/VisualStudio/feedback/details/581084/linker-cant-locate-some-external-symbol-when-use-mfc-in-a-static-library

0
По вопросам рекламы ammmcru@yandex.ru