Добавление #include <boost / thread / mutex.hpp> нарушает мой элемент управления ActiveX? - PullRequest
6 голосов
/ 18 марта 2011

Известна ли проблема с заголовком boost :: mutex при использовании внутри элемента управления ActiveX?
(Boost версия v1.39)

Если я создаю MFC ActiveX Control проект в Visual Studio 2008 называется "DefaultOCXControl" тогда я могу построить его, элемент управления регистрируется как часть сборки и может быть вставлен в тестовый контейнер ActiveX, как если быожидать.Все хорошо.

Если я тогда просто добавлю эту строку:

#include <boost/thread/mutex.hpp>

вверху моего файла DefaultOCXControlCtrl.h и перестройте: этап регистрации в конце сборки завершится неудачно с:

Ошибка отладки!
Программа: C: \ Windows \ system32 \ regsvr32.exe
Файл: f: \ dd \ vctools \ vc7libs \ ship \ atlmfc \ src \ mfc \dllinit.cpp
Строка: 587

Утверждающее утверждение выглядит так:

void AFXAPI AfxCoreInitModule()
{
    ASSERT(AfxGetModuleState() != AfxGetAppModuleState());
    ...

Попытка вставить элемент управления в тестовый контейнер ActiveX теперь приводит к тому же сообщению,Если я удаляю строку и перестраиваю, то все в порядке - так что определенно, похоже, что-то в этом заголовочном файле вызывает проблему.

Ответы [ 2 ]

7 голосов
/ 19 марта 2011

Вы пытались связать boost::thread динамически (определить BOOST_THREAD_DYN_LINK)?

У меня были проблемы такого рода при использовании boost::thread со смешанным проектом C ++ /. NET, а динамическое связывание только boost::threadрешение (здесь возможное объяснение: http://article.gmane.org/gmane.comp.lib.boost.user/22617/match=clr)

5 голосов
/ 13 января 2016

Начиная с Boost 1.52, вы можете попробовать добавить эту строку в ваш код, особенно если вы предпочитаете статические ссылки:

#include <boost/thread/win32/mfc_thread_init.hpp>

Источник: Boost Ticket 8550

...