Использование потоков повышения при компиляции с / clr - PullRequest
2 голосов
/ 10 января 2011

Я отказался от создания графического интерфейса непосредственно из Windows API, поэтому я собираюсь использовать формы. Я хотел бы многопоточность моего приложения и обернуть графический интерфейс в класс и поместить его в отдельный поток. Когда я нажимаю кнопку и т. Д., Это изменяет значение в структуре, которая будет считываться из основного потока. Моя проблема в том, что при компиляции приложения я получаю сообщение об ошибке с компоновщиком.

1>Core.obj : error LNK2022: metadata operation failed (8013119F) : A TypeRef exists which should, but does not, have a corresponding TypeDef: (dummy): (0x0100001f).

Мой код для main следующий:

int main()
{
//create thread object pointer
    boost::thread *GUIThread;
//create pointer to GUIInterface, which contains a member function that
//contains the Application::Run
    GUIInterface *myinterface;
    myinterface = new GUIInterface;

    GUIThread = new boost::thread(boost::bind(&GUIInterface::MainFunction, myinterface));
    return 0;
}

Работает нормально при создании класса и вызове функции в основном потоке, но использование boost вызывает проблемы. Я построил boost, используя правильный компилятор MSVC-10.0, а библиотека потоков всегда работала в прошлом, но clr просто вызывает проблемы. Любые рекомендации о том, как это исправить? ИЛИ если мне просто нужно использовать многопоточность .net (если мне это нужно, мне действительно нужны ссылки на то, как использовать с c ++, большинство вещей, которые я нахожу, находится в C #). Спасибо.

1 Ответ

2 голосов
/ 25 марта 2011

При использовании boost::thread в управляемом приложении возникают две проблемы.Первое - ошибка компоновщика, с которой вы столкнулись.Второй - ошибка инициализации при запуске приложения, если реализация boost::thread статически связана с вашим приложением.

Обе проблемы упоминаются в более раннем отчете об ошибке .Я не знаю, изменилось ли это в более поздних выпусках;1.43 имеет такую ​​же проблему.Я предполагаю, что нет, поскольку дело было закрыто wontfix.

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