2012-09-25 3 views
2

나는 잠시 동안 윈도우에서 부스트를 사용 해왔다. 이제는 우분투 12 상자에서 실행하기 위해 몇 가지 기존 애플 리케이션을 마이그레이션해야한다. 데모. 이 응용 프로그램은 들어오는 UDP 데이터를 기록하는 두 개의 작업자 스레드와 별도의 포트를 수신하여 해당 데이터를 화면에 인쇄하는 두 개의 작업자 스레드를 만듭니다.boost :: asio worker thread with boost :: thread with Linux

내가 일하는 다른 모든 것들을받은 적이 있지만 어떤 이유로 다음 줄은 "부스트의 잘못된 과부하 :: ASIO :: io_service :: 실행"

m_logThread = new boost::thread(boost::bind(&boost::asio::io_service::run, m_ioServicePtr)); 

이 줄의 오류와 함께 실패 내 Win32 기계에서 잘 작동하지만, 리눅스에서 잘못된 과부하 오류를 제공합니다.

또한 다른 두 오류가 있습니다

boost::bind is ambiguous 

type boost::thread could not be resolved 

그러나 나는 그들이 다른 오류에서 줄기 확신 해요. 나는 컴파일러가 IO 서비스에 대한 포인터와 스레드를 멤버 변수로 갖는 클래스에 대해 불평하지 않기 때문에 부스트 헤더를 확실히 포함하고 있습니다. 이것은 문제가되는 작업자 스레드를 생성해야하는 라인 일뿐입니다.

헤더 위치가 완벽하게 만족 스럽기 때문에 올바르게 설치 한 것 같습니다.

미리 감사드립니다.

답변

3

boost::asio::io_service::run에 과부하가 발생하는 오류는 resolve the ambiguity입니다.

+0

아니요, 문제가 아닌 것 같습니다. 전에 모호성없이 정확히 했어. 나는'# include'가 빠져 있다고 생각합니다. –

+0

건배 친구, 그게 다야. 모호성을 해결하면 다른 모든 문제가 씻겨 나왔습니다. – OcularProgrammer

+0

@ StefanNäwe, 나는 또한 '근원'으로 간주 될 수있는 다른 것을 발견했습니다. 마이 그 레이션에서 내가 부스트의 최신 버전을 가지고, 내 모든 다른 시스템은 1.46을 실행하고, 새로운 설치 1.51했다. 새 오버로드가 중간 버전 중 하나에 도입 된 것처럼 보입니다. – OcularProgrammer

관련 문제