У меня проблема при ссылке на созданную мной DLL. Исключение составляет Unhandled exception at 0x000007FA17461069 (ntdll.dll)
. Странно, что это происходит только в том случае, если я связываю DLL в приложении win32, но НЕ в консольном приложении win32. Проблема, похоже, связана с созданием потоков.Необработанное исключение, связанное с DLL
Стек вызовов выглядит следующим образом:
msvcr110d.dll!_callthreadstartex() Line 354 C
msvcr110d.dll!_threadstartex(void * ptd) Line 337 C
Библиотека DLL содержит реализации для платформы ACE proactor, используя операционные системы I порты завершения ввода/вывода. Он отлично работает в консольном приложении, но не в оконном приложении win32.
Любая помощь будет оценена по достоинству.
EDIT: в соответствии с просьбой комментарии ниже:
Строка кода, который бросает исключение составляет ACE_Service_Config::open(GetCommandLineA());
Я использую рамки ACE конфигурации, чтобы таким образом я загрузить мой DLL динамически с файлом svc.conf. Это единственная строка кода, которая должна быть записана в функцию main
консольной программы.
Я пробовал писать эту строку после того, как сообщение WM_CREATE поймано. Он падает.
Что произойдет, если вы запустите его в режиме деблокирования вместо отладки? – Arun
Узнайте, где выбрано исключение. Убедитесь, что вы используете DLL и EXE, связанные с одними и теми же DLL, а не, например. один из которых использует вариант отладки, но не другой. Проверьте журнал, чтобы узнать, какая именно DLL загружена. Узнайте, где находятся точные различия между рабочими и нерабочими версиями. Найдите код, который выдает исключение. Дистиллируйте минимальный пример и разместите здесь. –
@ Арун: ммм ... еще не пробовал. Я попробую. Однако при запуске в режиме выпуска мне придется перестроить все мои библиотеки, которые займут некоторое время. Есть ли разница между режимом выпуска и отладки? – l3utterfly