2010-01-15 6 views
1

제목은 괴롭 히기위한 것입니다. :-) 나는 그것이 불가능하다는 것을 알고 있지만, 여기에 내 문제가있다.동시에 사용 릴리스 및 디버그 모드에서 부스트

내 앱 (실제로는 DLL)은 부스트를 사용합니다. 또한 Boost를 사용하는 외부 API를 사용합니다. 물론 외부 API는 필요한 릴리스 Boost 바이너리가있는 릴리스 바이너리로 제공됩니다.

릴리스 모드에서 DLL을 컴파일/링크 할 때 아무런 문제가 없습니다. 정확하게 앱을 부스트에 동적으로 연결합니다 (BOOST_ALL_DYN_LINK). 디버그 모드에서 내 DLL을로드 할 수 없습니다. 부스트 때문에 확실하지 않지만 Windows가 두 개의 부스트 (외부 라이브러리에 의해 호출 된 릴리스 1과 코드에서 호출 된 디버그 1)로 작업하는 것을 좋아하지 않는다고 생각됩니다.

내 코드를 릴리즈 부스트와 정적으로 연결하면 더 잘 작동할까요?

이벤트 뷰어에 아무 것도 없기 때문에 나는 CRT와 관련이 없다고 생각합니다.

Visual Studio 2005 SP1을 사용합니다.

감사합니다.

답변

0

내 코드를 릴리스 부스트와 정적으로 연결하면 더 잘 작동합니까? 당신이 정적으로 링크하는 경우, 당신은 당신의 바이너리에 부스트 '사본'을 얻고, 더 부스트 DLL 혹시 .. 외부 라이브러리가 행복하게 연결됩니다 필요가 자신의 향상을 위해로드되지 않습니다 -

예, 그게 내가 기대하는거야 그것의 방출 dlls에. 그러나 외부 라이브러리가 응용 프로그램에서 호출 한 공용 API에서 실제로 boost를 사용하는 경우에는이 방법이 작동하지 않습니다! 이 경우 문제를 해결할 수 없습니다. 부스트가 필요한 API를 호출하면 부스트 빌드 과 일치해야 API 구현이 향상됩니다.

+0

디버그 앱을 릴리스 Boost에 정적으로 연결하려고했습니다. "그러나"여전히 적용됩니까? – Oodini

+0

응용 프로그램을 릴리스 빌드로 밀어 넣으면 .. 왜 외부 라이브러리와 동일한 부스트 DLL 런타임을 사용하지 않습니까? 정적으로 링크 할 필요가 없습니다. –

+0

당신은 완전히 옳습니다. 내 마음은 2 Boost 팩에 붙어있었습니다. :-) – Oodini

관련 문제