MFC in a Shared DLL, Win98-WinXP

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

fallologia
Сообщения: 20
Зарегистрирован: 22 июл 2005, 12:51

Hawk писал(а):А если debug екзешник запустить в отладчике, что нить появляется ? Ошибки какие-нить лезут ?
В том-то и дело, что в отладчике ни при компиляции, ни при работе программы debug-версии нет никаких изъянов. Нет никаких и жалоб дебагера и при компиляции release-версии. Возникает окошко release-программы, но как только пытаешься запустить ее на компиляцию текста, сразу дебаггер тычет мордой со своего обычного положения
BFF66878 CC int 3
, откуда он ни шелохнётся при нормальной работе дебаг-версии, на
00403C07 85 01 test dword ptr [ecx],eax
с выдачей в промежутке сообщения
Unhandled exception in rM.exe 0xC0000005: Access Violation
. И усё тут. И ничего больше от него не добъёшься. И это на всех версиях релиза, что шэр, что статик. :?
fallologia
Сообщения: 20
Зарегистрирован: 22 июл 2005, 12:51

Йех, выложил бы исходник, да только как я его сюда прикреплю?.. Ага, ну вот. Если, кому будет досуг, помогите, пжалуста, разобраться с ошибками. :wink: Весу 44 Кб: http://sr2.mytempdir.com/149661 или http://rapidshare.de/files/4852827/RusSyn.zip.html
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Тю, это NuMega, что ли?
Она самая

fallologia, похоже ты попал в ту же ситуевину, что я описывал :( Разбираться в твоих исходниках нет ни времени, ни желания, поэтому совет такой: для начала преставь Visual Studio VC6 на компе с Win98/ME, если не поможет - пользуй debug-версию.

Насчет ошибки компиляции - не нужно отказываться от MessageBoxIndirect. Вот код для DoModal, вставь вместо своего:

Код: Выделить всё

    int DoModal() { return ::MessageBoxIndirect(static_cast< MSGBOXPARAMS* >(this)); } 
Eugie
Сообщения: 708
Зарегистрирован: 17 фев 2004, 23:59
Откуда: SPb

Не удержался, взглянул на твой проект :) У тебя в настройках release-проекта задан очень маленький размер стека - задай хотя бы по умолчанию (1MB). Вероятно, в этом и причина трабла.
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

Еще такая фишка, что возможно какая-то из переменных не инициализирована.
Дебагу - пофигу он неявно инициализирует, а вот рилиз начинает плакать и вешаться. - проверь мот как раз твой случай.
В SAD - все в SAD.
fallologia
Сообщения: 20
Зарегистрирован: 22 июл 2005, 12:51

Так и есть. Все дело в стэке. Заоптимизировался и даже и не мог догадываться, к чему такая "оптимизация" приведёт. Убрал из конфигурации проекта левую строчку
STACK:...
, и всё стало в ажуре. Eugie, спасибо тебе за твой намётанный взгляд, уделённое внимание и терпение :!: Теперь RusCon идет без проблем на Windows XP, 2000, Me и 98. А вот на 95 проходит номер лишь со статистической библиотекой. Но и она для релиза раз в пять будет меньше, чем дебаговская. А что, если скомпилировать на Visual Studia 5, обычная релизовская версия с шэр длл будет идти на 95?..

Напоследок, в завершение темы, два побочных по ней вопроса:

1. В каких настройках и как сделать так, чтобы Microsoft Visual Studio .NET 2003 связывала с dll не специфической 71 версии, а более широко распространенной 42?.. Допустим, по умолчанию она линкует шэр-релиз-версию программы с MFC71.dll и msvcr71.dll, а на Винде, скажем, 98, только есть mfc42.dll и msvcrt.dll, с которыми по умолчанию связывает Microsoft Visual Studio 6.

2. Попытался слинковать программу на Microsoft Visual Studio 5. Там дело уперлось в то, что функция REPLACE, которая появляется в 6 версии, 5-ой ещё не известна. Допустим, стоит у меня

Код: Выделить всё

m_sReadFromFile.Replace("\r\n","\"\r\n\"")
и 5-я на это говорит, что
"error C2039: 'Replace' : is not a member of 'CString'"
. Как эту функцию

Код: Выделить всё

m_sReadFromFile.Replace("\r\n","\"\r\n\"")
записать для 5 версии студии?..
Kolinus
Сообщения: 449
Зарегистрирован: 23 авг 2004, 14:02
Откуда: Минск

подключить заголовки от шестой и либы от нее
В SAD - все в SAD.
fallologia
Сообщения: 20
Зарегистрирован: 22 июл 2005, 12:51

Kolinus писал(а):подключить заголовки от шестой и либы от нее
Через какие настройки и менюшки на панели?.. Да и, кроме того, а если 6 студии нет?.. Шо, так и мириться с Microsoft Visual Studio .NET 2003 умолчаниями?..
Ответить