2009-05-13 16 views
1

이전에 생성 된 .obj 파일의 링크를 수행하려고합니다 (최신 버전의 MSVC 사용). 그 .OBJ 년대가 생성되었을 때#pragma comment (lib, ...)를 무시 하시겠습니까?

은, 소스 코드는 지정된 :

등으로
#pragma comment(lib, ...) 

, 링커는 소스에 지정된 정적 라이브러리에 연결하려고합니다. 링커에게이 라이브러리를 무시하도록 지시 할 수있는 방법이 있나요? 그래서 직접 지정할 수 있습니까? 소스의 조각은 다음했다면

예는 : 링크시

#pragma comment(lib, foo.lib) 

, 나는 링커 대신 'bar.lib'에 대한 링크를 'foo.lib'을 무시하고 싶습니다.

답변

1

왜 소스 (#pragma 지시어)를 변경하지 않습니까?

LIB

장소 오브젝트 파일의 라이브러리 검색 기록 : comment MSDN 페이지에서

. 이 주석 유형에는 링커에서 검색 할 라이브러리의 이름 (및 가능하면 경로)을 포함하는 commentstring 매개 변수가 반드시 있어야합니다. 라이브러리 이름은 오브젝트 파일의 기본 라이브러리 검색 레코드 다음에옵니다. 링커는 라이브러리가/nodefaultlib로 지정되지 않은 경우 명령 행에서 이름을 지정한 것처럼이 라이브러리를 검색합니다. 동일한 소스 파일에 여러 라이브러리 검색 레코드를 저장할 수 있습니다. 각 레코드는 소스 파일에서 발견되는 순서와 동일한 순서로 오브젝트 파일에 나타납니다.

기본 라이브러리와 추가 된 라이브러리의 순서가 중요한 경우/Zl 스위치를 사용하여 컴파일하면 기본 라이브러리 이름이 개체 모듈에 배치되지 않습니다. 그런 다음 두 번째 주석 pragma를 사용하여 추가 된 라이브러리 뒤에 기본 라이브러리의 이름을 삽입 할 수 있습니다. 이 pragma와 함께 나열된 라이브러리는 소스 모듈에서 발견되는 것과 동일한 순서로 객체 모듈에 나타납니다.

는 또한 연결되는 foo.lib를 중지 NODEFALTLIB 링커 옵션을 사용하고, 같이하는 다른 라이브러리 파일 (즉, 링커 속성 창을 통해) bar.lib을 지정할 수 있습니다.

그렇지 않은 경우 bar.libfoo.lib (건 방진 솔루션)으로 바꿉니다.