2013-07-18 3 views
0

Я использую MFC для написания окна программы я использовал эти параметры при создании проекта
File -> New Project -> MFC applicatioin
. и в мастере приложений MFC я выбрал: тип
Применение: Диалог на основе
языка ресурсов: английский (United States) библиотеки
Использование Unicode
Проект стиль: стандарт MFC
Использование MFC: Использование MFC в статической библиотеке
Основные стили рамок: Толстые рамки, системное меню и О коробка тикали
Дополнительные функции: элементы управления ActiveX, Общий контроль Manifest и поддержка Restart Manager галочки
Диалог название: P2
Создаваемые классы: Cp2App и Cp2Dlg
Я еще не добавил никаких кодов проекта. И я только что добавление элементов управления в форме:ошибки LNK2001: неразрешенный внешний символ «общественность: недействительный __thiscall

enter image description here
, но когда я пытаюсь запустить проект, я получаю ошибки:
1-ошибку LNK2001: неразрешенный внешний символ «общественность: недействительный __thiscall CP2Dlg :: OnBnClickedButton2 (аннулируются)»(OnBnClickedButton2 @ CP2Dlg @@ QAEXXZ?)
2-ошибка LNK1120: 1 неразрешенных внешних
Я знаю, что я могу начать новый проект, чтобы избежать ошибки. Но я хочу знать, что вызывает эту проблему и ее решить?

Примечание: первая ошибка возникает в P2Dlg.obj, а вторая - в файле P2.exe.

Отредактированный раздел: На самом деле я считаю, что эта ошибка связана с тем, что я небрежно дважды щелкнул Button2 и создал обработчик событий BnClickedButton2 и удалил его. Теперь я пытаюсь снова создать этот обработчик событий, но я не могу, потому что, когда я нажимаю кнопку «button2» и выбираю add eventhandler в мастере обработчика событий, опция BN_CLICKED неактивна.
Я хочу знать, как вообще исправить такие проблемы. Пожалуйста, помогите мне?

Отредактировано раздел 2: Я добавил эту функцию в файле P2.cpp с помощью Add EventHandler, но это не решило проблему:

void CP2App::OnBnClickedButton2() 
{ 
    // TODO: Add your control notification handler code here 
} 

функция CP2Dlg::OnBnClickedButton2 должна быть добавлена, но я не могу добавьте его. Это неактивно ?????

+0

Возможный дубликат [Что такое неопределенная ссылка/неразрешенная ошибка внешнего символа и как ее исправить ?: Объявлено, но не определено переменная или функция.] (Http://stackoverflow.com/questions/12573816/what -is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) –

+0

Вы никогда не должны пытаться использовать MFC, не зная Win32-Programming уже. Чарльз Петцольд, вероятно, по-прежнему остается лучшим ресурсом для изучения последнего. Если/Когда вы решили начать работу с MFC, вы должны, по крайней мере, в состоянии * прочитать * созданный мастером код. Jeff Prosise - обязательное чтение для любого разработчика MFC. – IInspectable

ответ

0

На карте сообщения диалога есть строка, которая пытается вызвать удаленную функцию. В будущем, если вы удалите функцию обработчика сообщений, также удалите соответствующую запись на карте сообщений.

Обработчик сообщения должен находиться в классе диалога. (Это сообщение отправлено.) Очистите карту сообщений и функцию и перестройте все. Тогда вы, возможно, сможете снова активировать мастер добавления событий.

+0

спасибо @ ScottMcP-MVP, как я могу удалить карту сообщений? – sepideh

+0

@sepideh Вы удаляете карту сообщений, удаляя ее декларацию 'DECLARE_MESSAGE_MAP()' и реализацию 'BEGIN_MESSAGE_MAP (cls, base)' ... 'END_MESSAGE_MAP()'. Я понятия не имею, почему вы хотели бы это сделать. – IInspectable

 Смежные вопросы

  • Нет связанных вопросов^_^