2
我放棄了直接從windows API創建GUI,所以我要使用表單。我想多線程化我的應用程序,並將GUI包裝在一個類中,並將其放在單獨的線程中。當我點擊一個按鈕等,它會改變將從主線程讀取的結構中的值。我的問題是,當我編譯我的應用程序時,我得到鏈接器錯誤。在使用/ clr編譯時使用boost線程
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; }
創建上課的時候,並呼籲在主線程的功能,但使用升壓它工作正常,會引起問題。我使用正確的編譯器MSVC-10.0構建了boost,並且線程庫一直工作在過去,但是clr只會導致問題。 有關如何解決此問題的任何建議? 或者如果我應該只使用.net多線程(如果我這樣做,我真的需要一些鏈接來指導如何使用C++,我發現的大多數東西都在C#中)。 謝謝。
您正在收到此錯誤,因爲boost :: thread使用r值引用。不受管理的鏈接器支持。您正以這種方式前往火車殘骸,用戶界面不是您可以直接插入的東西。您必須創建一個單線程的公寓,UI基本上是線程不安全的。不知道如何讓你擺脫困境。 – 2011-01-10 19:33:19