2013-05-26 5 views
2

g ++ 컴파일러를 사용하여 코드 블록에서 프로그램을 실행하려고하면이 매우 이상한 문제가 발생합니다. 나는 1 주일 전까지 부스트를 설치하고 그것을 사용했다. 아무런 문제가 없었다. 오늘은 내가 작업하고 있었고, 난이 libboost_thread-mgw47-MT-1_53.dll로부터 없기 때문에 시작할 수 없습니다 그것을컴퓨터에서 C++ 부스트 스레드가 누락되었습니다.

프로그램을 실행하려고하면 갑자기 오류 메시지가 다음 얻을 프로젝트에 반환 너의 컴퓨터. 이 문제를 해결하려면 프로그램을 다시 설치하십시오.

이제이 프로그램에서 부스트 스레드를 사용 했으므로 왜이 문제가 발생하는지 잘 모릅니다. 또한 이상한 점은 내가 가진 다른 프로젝트에서 스레드가 작동한다는 것입니다.

어떻게 해결할 수 있습니까? 모든 것이 제자리에 있고, 경로 변수가 설정되었고, 컴파일러, 링커 옵션이 설정되었습니다. 내가 마지막으로이 프로그램을 성공적으로 실행 한 이후로 나는 바뀌지 않았습니다. 저는 Visual Studio를 오늘 업데이트했습니다. 그러나 나는 그것이 효과가 있어야한다고 생각하지 않습니다. 나는 왜 이것이 일어나고 있는지 전혀 알지 못하기 때문에 내가 줄 수있는 다른 정보가 무엇인지 잘 모른다. .dll 파일은 확실히 존재하지만 작업 디렉토리로 이동하려고 시도했지만 여전히 동일한 오류가 발생합니다.

누구든지이 문제를 해결할 수있는 방법에 대한 제안 사항이 있으십니까?

은 해당 프로젝트에 대한 여러분의 컴파일러는이 동적 부스트 스레드 라이브러리를 연결한다
+0

해당 DLL을 프로그램의 폴더에 복사 하시겠습니까? – wheybags

+0

나도 그걸 시도해 봤는데 그 중 하나도 작동하지 않았다. –

+0

@Muckle_ewe 그렇게했을 때 무슨 일이 일어 났습니까? – jozefg

답변

1

,

아마

일부 잘못 링커 옵션에서 설정이나 코드를 컴파일 시간에 해결 '정상'기능을 대신 같이 DllImport 사용 (같이 DllImport 함수를 해결 런타임에 - 필요한 라이브러리에서 찾을 수 없으므로 오류가 발생합니다.)

당신의 다른 프로젝트는 정적으로 부스트 스레드 라이브러리를 링크하기 때문에 (정적 링크/컴파일을 위해 corret 부스트 전 처리기 정의를 제공하고 스레드 라이브러리에 해당하는 cpp/lib 파일을 포함하므로) 프로젝트에 포함되어 있기 때문에 다른 프로젝트가 작동합니다.

0

그래서 알아 냈습니다. (다시, 나는 코드 블록을 사용하고있다.)

필자는 전역 컴파일러와 링커 설정에서 모든 것을 설정했다. 나는 개별 프로젝트 컴파일러 설정에서 모든 것을 설정했지만, 작동중인 프로젝트도 링커 설정에서 약간의 추가 작업을했습니다. 그래서 프로젝트 -> 빌드 옵션 -> 디렉토리 검색 -> 링커 부분에서 디버깅/릴리즈가 아닌 프로젝트 이름을 선택하여 모든 설정을 완료했습니다. 내가 추가했습니다 ... $ (# boost.lib) ............ \ boost_1_53_0 \ stage \ lib 이제 괜찮습니다.

일종의 글로벌 컴파일러 설정은 개별 프로젝트 설정을 다루지 않지만 놀랍습니다.

+0

그래서 ... 내 대답이 도움이 되었습니까? 사실 이것은 대답이 아니므로이 게시물을 삭제하고 다른 제목 아래 질문에 처리해야한다고 생각합니다. F –

관련 문제