2012-03-09 64 views
0

OS:Win7的
IDE:Visual Studio 2010中
加速版本:1.47無法把一個升壓線程睡着

我是新來振奮,我想要是非常簡單的。我在頭文件中創建了一個單線程,並嘗試將它放到睡眠狀態。但我無法得到它的工作。下面是代碼和編譯錯誤

main.h -

#pragma once 
#include <conio.h> 
#include <boost\thread.hpp> 

boost::posix_time::seconds workTime (120); 
boost::this_thread::sleep (workTime); 

的main.cpp

#include "main.h" 

void main (void) { 
    _getch(); 
}; 

輸出 -

error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
error C2365: 'boost::this_thread::sleep' : redefinition; previous definition was 'function' 
error C2491: 'boost::this_thread::sleep' : definition of dllimport data not allowed 
error C2482: 'boost::this_thread::sleep' : dynamic initialization of 'thread' data not allowed 

現在使用下面的代碼,都在主.cpp:

#include <boost\thread.hpp> 
#include <conio.h> 

void thread_func() 
{ 
    boost::posix_time::seconds workTime (120); 
    boost::this_thread::sleep (workTime); 
} 

int main(int argc, char* argv[]) 
{ 
    boost::thread t(thread_func); 
    _getch(); 
} 

接收如下錯誤:

1> LIBCMTD.lib(dbgheap.obj):錯誤LNK2005:在LIBCMT.LIB(malloc.obj)已經定義__heap_alloc
1> LIBCMTD.lib(dbgheap.obj) :錯誤LNK2005:在LIBCMT.LIB(recalloc.obj)已經定義__recalloc
1> LIBCMTD.lib(dbgheap.obj):錯誤LNK2005:在LIBCMT.LIB(msize.obj)
1> LIBCMTD已經定義__msize。 lib(dbghook.obj):錯誤LNK2005:__crt_debugger_hook已在LIBCMT.lib中定義(dbghook.obj)
1> LIBCMTD.lib(isctype.obj):錯誤LNK2005:__isctype_l已在LIBCMT.lib中定義(isctype.obj)> LIBCMTD.lib(isctype.obj):錯誤LNK2005:已在LIBCMT.lib中定義的__isctype(isctype.obj)
1> LINK:警告LNK4098:defaultlib'LIBCMTD'與使用其他庫相沖突;使用/ NODEFAULTLIB:庫
1>致命錯誤LNK1169:一個或一個以上乘法定義的符號發現

+0

我的#include語句不出來吧,對不起 – 2012-03-09 08:50:53

+0

好像你混在一起的main.c main.h?您提供的代碼應放置在源文件中,而不是頭文件中。 – 2012-03-09 09:13:43

+0

K,我會給它一個 – 2012-03-09 09:22:49

回答

1

要調用boost::this_thread::sleep (workTime)之外的任何控制流。你應該這樣做:

void thread_func() 
{ 
    boost::posix_time::seconds workTime (120); 
    boost::this_thread::sleep (workTime); 
} 

int main(int argc, char* argv[]) 
{ 
    boost::thread t(thread_func); 
    _getch(); 
}