【发布时间】:2011-06-06 16:53:24
【问题描述】:
我已经放弃直接从 Windows API 创建 GUI,所以我将使用表单。我想多线程我的应用程序并将 GUI 包装在一个类中并将它放在一个单独的线程中。当我单击按钮等时,它将更改将从主线程读取的结构中的值。我的问题是,当我编译我的应用程序时,链接器出现错误。
1>Core.obj:错误LNK2022:元数据操作失败(8013119F):存在一个TypeRef,它应该但没有对应的TypeDef:(虚拟):(0x0100001f)。我的 main 代码如下。
主函数() { //创建线程对象指针 boost::thread *GUIThread; //创建指向GUIInterface的指针,其中包含一个成员函数 //包含应用程序::运行 GUI接口 *myinterface; 我的界面 = 新的 GUI 界面; GUIThread = new boost::thread(boost::bind(&GUIInterface::MainFunction, myinterface)); 返回0; }在主线程中创建类和调用函数时效果很好,但是使用boost会出现问题。我使用正确的编译器 MSVC-10.0 构建了 boost,并且线程库在过去一直有效,但 clr 只会导致问题。 有关如何解决此问题的任何建议? 或者,如果我应该只使用 .net 多线程(如果我这样做,我真的需要一些链接来了解如何在 c++ 中使用,我发现的大多数东西都在 C# 中)。 谢谢。
【问题讨论】:
-
您收到此错误是因为 boost::thread 使用了右值引用。托管链接器不支持。您正以这种方式前往火车失事,用户界面不是您可以随便安装的东西。你必须创建一个单线程单元,一个 UI 基本上是线程不安全的。不知道如何让你远离麻烦。
-
是否可以在没有右值的情况下构建 boost?
标签: .net c++ multithreading clr