Проблема с CString с MFC на основе диалоговых окон, мигрирующих из VS 2008 32 бит против 64 бит 2017
Эй Ребята,
У меня есть интересный вопрос относительно переноса 32-битного проекта MFC на VS 2008 на 64-битный на VS 2017.
Проблема вращается вокруг следующего примера кода
CMyDialog *dlg; CString myString; dlg = new CMyDialog(NULL); myString = _T("test"); dlg->m_dlg_string = myString; if(dlg->DoModal() == IDOK) { myString = dlg->m_dlg_string; } dlg->~CMyDialog()
Вот тут и есть заковыка. В 32-битном проекте MFC VS 2008 этот фрагмент кода является пуленепробиваемым. С 64-битным преобразованием в VS 2017 это бросает исключения повсюду.
Я понимаю, что это может быть вопрос о том, какой длины кусок веревки, но есть ли у кого-нибудь какие-нибудь идеи?
Я с нетерпением жду всех ответов и заранее благодарю вас.
P. S - Я использую VS 2017 15.9
Что я уже пробовал:
То, что я пытался сделать, чтобы решить эту проблему, заключается в следующем,
*Изменение порядка объявления CString. Это был прославленный пластырь
*Создание нового диалога в проекте VS 2017. Что меня потрясло, так это то, что он имел тот же результат, но то, что вызвало исключение, было назначением строки.
Richard MacCutchan
- разбрасывая повсюду исключения."
Извините, но мы не можем догадаться, что это значит. Какие исключения вы видите и какая строка кода их выбрасывает?
Richard MacCutchan
Почему вы делаете явный вызов деструктора, вместо того чтобы использовать delete
оператор?