Boost Threads с CLR - PullRequest
       36

Boost Threads с CLR

10 голосов
/ 24 мая 2011

Использование Visual Studio 2008 и Boost Libraries 1.46.1 Я хочу скомпилировать и связать следующее с флагом / CLR:

#include <boost/thread/thread.hpp>
void run() {}
int main(int argc, char *argv[])
{
    boost::thread t(run);   
}

Первая ошибка связана с объявленной заранее фиктивной структурой в boost :: thread. Этот пост обходит это, объявив:

namespace boost {
    struct thread::dummy {};
}

Конечно, теперь я могу скомпилировать, но потом получаю предупреждение компоновщика

Предупреждение 1 предупреждение LNK4248: неразрешенный токен typeref (0100001F) для 'boost.detail.win32._SECURITY_ATTRIBUTES'; изображение может не работать

Запуск приложения приводит к

Не удалось правильно запустить приложение (0xc000007b).

Ни одно из предложений в ранее упомянутой ветке форума не работает для меня. Я создал статическую версию библиотеки Boost Threads, и она прекрасно работает без флага / CLR. Отладка / выпуск не имеет значения. Я работаю под Win7 32-бит.

Есть подсказки?

1 Ответ

3 голосов
/ 23 ноября 2011

Я уже сталкивался с этой проблемой, я не помню, откуда я это взял, но один обходной путь - объявить «boost.detail.win32._SECURITY_ATTRIBUTES» после включения всех заголовков надстройки, например, так.

namespace boost { 
    namespace detail { 
        namespace win32 { 
            struct _SECURITY_ATTRIBUTES: public ::_SECURITY_ATTRIBUTES {}; 
        };
    };
}; 

Удалите пространства имен, если хотите, чтобы все видели это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...