2012-02-24 4 views
2

일부 중요하지 않은 backround : 저는 Visual Studio 2010을 사용하여 CGAL을 제작하려고합니다. GMP 및 MPFR 라이브러리에 의존합니다. CGAL에 의존하는 프로젝트를 만들고 있습니다. 내 프로젝트를 빌드 할 때링커가 빌드 할 inlclude .lib 파일을 선택하는 방법은 무엇입니까?

, 내가 링커 오류가 있습니다 그러나

error LNK1104: cannot open file 'gmp-vc100-mt-sgd.lib' 

을, 나는 파일 gmp.lib에서 GMP를 사용하는 CGAL 말했다. 그리고 그것은 실제로 사용됩니다. 하지만 어떻게 든 링커는 gmp-vc100-mt-sgd.lib를 추가로 원합니다. 그래서, 'gmp-vc100-mt-sgd.lib'는 기본 이름이며, 일부 CGAL 구성 .h 파일을 변경하여 'gmp.lib'로 변경했습니다. 나는 가능한 모든 장소를 확인했습니다

  • 링커 -에서 그런 LIB는 없다>를 내 프로젝트에 추가 종속성이 LIB
  • 위 내 프로젝트에서 참조가 더 이상 존재하지
  • 는 모든 프로젝트에 적합한 내 솔루션에
  • 내가 CGAL 및 rebui을 다시 시도했습니다

모든 .H 포함 된 파일에는 #pragma comment(lib, "gmp-vc100-mt-sgd.lib") 지침 (내 프로젝트의 모든 파일에 대한 .I 처리기 출력을 생성 한)는 없다 링컨은 여전히 ​​오래된 'gmp-vc100-mt-sgd.lib'파일을 원합니다.

막혔습니다. 확인해야 할 다른 옵션이 있습니까? 추가 .lib 종속성이있는 다른 소스는 무엇입니까? gmp-vc100-mt-sgd.lib의 유일한 언급은/DEFAULTLIB : 지시문 아래의 CGAL .lib 및 .obj 파일에 있습니다. 나는이 마법의 gmp-vc100-mt-sgd.lib 이름에 대한 언급이없는 결과를 찾기 위해 CGAL 솔루션의 모든 파일을 조사했다.

gmp-vc100-mt-sgd.lib가 부분적으로 나뉘어지지 않도록하기 위해 .i 파일의 모든 #pragma 지시문을 검사했습니다. 찾을 수 없습니다. 그것은 거기에 절대적으로 제시되지 않습니다.

아이디어가 있으십니까?

+0

'gmp.lib'의 이름을'gmp-vc100-mt-sgd.lib'로 바꾸어 보았습니까? – karlphillip

+0

전체 프로젝트에서 "gmp-vc100-mt-sgd"에 대한 전문 검색을 수행 했습니까? 또한 빌드 프로세스 중에 링크에 주어진 전체 명령 행을 캡처하는 방법이 있습니다. –

+0

솔루션을 생성하기 위해 cmake를 사용하고 있습니까? – sloriot

답변

0

좋아, 알아 냈어. 문제는 실제로이/DEFAULTLIB 안에있는 CGAL.lib 파일에서 발견되었습니다.

Visual Studio에서 .lib 파일을 만들고 #pragma comment 지시문을 발견하면이 라이브러리를 연결하는 방법에 대한 지침이 남았습니다. 알다시피, 링크 할 때 링커에게 옵션으로 /DEFAULTLIB을 사용하도록 알려줍니다. 그리고 링커는 미해결의 외부 객체가없는 경우에도이 라이브러리를 검색 목록에 추가하려고합니다.

그래서 프로젝트를 빌드 할 때 #pragma comment 지시어를 제거하려고했지만 CGAL 프로젝트 자체를 빌드 할 때 제거해야했습니다. 후자가 잘 작동합니다.

관련 문제