Необработанное исключение, связывающее с DLL

У меня есть проблема, когда я связываюсь с DLL, которую я создал. Исключение составляет Unhandled exception at 0x000007FA17461069 (ntdll.dll), Странно то, что это происходит, только если я связываю DLL в приложении win32, но НЕ в консольном приложении win32. Кажется, что проблема связана с созданием потоков.

Стек вызовов выглядит следующим образом:

msvcr110d.dll!_callthreadstartex() Line 354            C
msvcr110d.dll!_threadstartex(void * ptd) Line 337      C

DLL содержит реализации для среды ACE proactor, использующей порты завершения операций ввода-вывода операционной системы. Он отлично работает в консольном приложении, но не в оконном приложении win32.

Любая помощь будет оценена.

РЕДАКТИРОВАТЬ: в соответствии с требованиями комментариев ниже:

Строка кода, которая выдает исключение: ACE_Service_Config::open(GetCommandLineA());

Я использую инфраструктуру конфигурации ACE, чтобы динамически загружать свою DLL с помощью файла svc.conf. Это единственная строка кода, которая должна быть записана в main функция консольной программы.

Я попытался написать эту строку после того, как сообщение WM_CREATE было перехвачено. Это падает.

1

Решение

При создании консольного приложения ACE переопределит main, чтобы убедиться, что оно правильно инициализировано. При создании приложения Win32 Windows этот трюк не работает. Вы должны вызвать ACE :: init () и ACE :: fini () самостоятельно, см. Пример ACE_wrappers / tests / ACE_Init_Test.cpp, как вы можете это сделать.

2

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

Других решений пока нет …