developer tip

치명적인 오류 LNK1104 : 'libboost_system-vc110-mt-gd-1_51.lib'파일을 열 수 없습니다.

copycodes 2020. 10. 18. 18:29
반응형

치명적인 오류 LNK1104 : 'libboost_system-vc110-mt-gd-1_51.lib'파일을 열 수 없습니다.


이 작업을 할 수 없습니다. websocket++라이브러리가 필요한 간단한 콘솔 애플리케이션 ( 라이브러리에 의존 )을 만들었습니다 Boost.하지만 컴파일하려고하면 다음과 같은 결과가 나타납니다.

치명적인 오류 LNK1104 : 'libboost_system-vc110-mt-gd-1_51.lib'파일을 열 수 없습니다.

그러나 lib를 만든 bjam (boost_root)/stage/libs을 수행하고 libs 경로를 컴파일러에 연결했습니다 C++/Additionnals includes.

(boost_root)/stage/libs파일을 보면 libboost_system-vc110-mt-gd-1_51.lib거기에 없습니다. libboost_system-vc110-mt-sgd-1_51.lib대신 호출 됩니다.

어떤 생각?


추가 C ++ → 일반 → 디렉토리 포함 컴파일러가 헤더 파일을 검색 할 디렉토리를 나열위한 매개 변수를.

링크 할 라이브러리를 찾을 위치를 링커에 알려야합니다. 이 설정에 액세스하려면 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭 한 다음 속성 → 링커 → 일반 → 추가 라이브러리 디렉터리를 클릭 합니다. <boost_path>\stage\lib여기에 입력 하십시오 ( 기본 옵션을 사용하여 Boost빌드하는 경우 라이브러리가있는 경로 ).


이것은 혼자서 C ++를 공부하는 저와 같은 아마추어에게 가장 간단한 방법입니다.

먼저 원하는 디렉토리에 부스트 라이브러리의 압축을 풉니 다. 나는 추천한다 c:\directory.

  1. Visual C ++를 엽니 다.
  2. 새 프로젝트를 만듭니다.
  3. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  4. 속성을 클릭하십시오.
  5. C / C ++를 클릭합니다.
  6. 일반을 클릭하십시오.
  7. 추가 포함 라이브러리를 선택하십시오.
  8. 라이브러리 대상을 포함하십시오. 예 : c:\boost_1_57_0.
  9. 사전 컴파일러 헤더를 클릭하십시오.
  10. 미리 컴파일 된 헤더 생성 / 사용을 클릭합니다.
  11. 미리 컴파일 된 헤더를 사용하지 않도록 선택합니다.

그런 다음 문제가 발생한 경우 링크 라이브러리로 이동하십시오.

  1. 압축을 푼 파일은 c:\boost_1_57_0.
  2. 클릭 booststrap.bat(명령 창에 입력하는 것을 귀찮게하지 말고 2 주가 걸리는 문제를 해결하는 데 걸린 창을 닫지 마십시오. 잠시 후이 booststrap실행되고 동일한 파일이 생성됩니다. 하지만 이제는 b2, 및 bjam.
  3. 를 클릭 b2하고 실행될 때까지 기다리십시오.
  4. 를 클릭 bjam하고 실행될 때까지 기다리십시오. 그러면라는 폴더가 생성 stage됩니다.
  5. 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  6. 속성을 클릭하십시오.
  7. 링커를 클릭하십시오.
  8. 일반을 클릭하십시오.
  9. 추가 라이브러리 디렉토리 포함을 클릭하십시오.
  10. 예를 들어 라이브러리의 일부를 선택합니다 c:\boost_1_57_0\stage\lib.

그리고 당신은 갈 수 있습니다!


나는 같은 문제가 있었다. Visual C ++ 2010 (v100)으로 Boost를 컴파일하고 실수로 Visual Studio 2012 (v110)에서 라이브러리를 사용하려고했기 때문에 발생했습니다.

그래서 구성 (Visual Studio 2012에서)을 프로젝트 속성 -> 일반 -> Plataform Toolset 으로 변경하고 값을 Visual Studio 2012 (v110) 에서 Visual Studio 2010 (v100)으로 변경했습니다 .


또 다른 해결책 :

Link-> Additional Dependencies 속성에 boost_regex-vc120-mt-gd-1_58.lib를 포함하고 있었기 때문에 당황했지만 링크는 libboost_regex-vc120-mt-gd-1_58.lib ( lib 접두사에 유의하십시오). libboost_regex-vc120-mt-gd-1_58.lib를 지정하지 않았습니다.

I was trying to use (and had built) the boost dynamic libraries (.dlls) but did not have the BOOST_ALL_DYN_LINK macro defined. Apparently there are hints in the compile to include a library, and without BOOST_ALL_DYN_LINK it looks for the static library (with the lib prefix), not the dynamic library (without a lib prefix).


I had the same problem and my mistake was that I had installed the binary boost_1_55_0-msvc-11.0-32.exe to use with visual c++ 2010 which has the version v100 (project properties->ConfiguratioProperties->General->platformTooset) not v110 as visual c++ 2012. So I dowloaded boost_1_55_0-msvc-10.0-32.exe and now everything is ok so far.


In case you have trouble building boost or prefer not to do that, an alternative is to download the lib files from SourceForge. The link will take you to a folder of zipped lib and dll files for version 1.51. But, you should be able to edit the link to specify the version of choice. Apparently the installer from BoostPro has some issues.


I had a similar problem when trying to use boost unit testing in Visual Studio 2015 (Community Edition):

fatal error LNK1104: libboost_unit_test_framework-vc140-mt-1_57

so I thought I'd share my solution.

You can create a boost unit testing project in of of two ways (and this solution works for both):

  1. using the Boost Unit Test Adapter
  2. or by creating a Win32 Console Application (steps here), and substituting the main function with a boost unit testing function (steps here).

Here are the steps I followed to get both projects to work:

First, download the desired boost version (for example, boost_1_57_0). You can either download boost with the correct binaries (compiled using msvc v140), or extract the binaries yourself by running the following commands from command line:

  1. bootstrap.bat
  2. "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86
  3. bjam --clean
  4. bjam -j4 --debug-symbols=on --build-type=complete toolset=msvc-14.0 threading=multi runtime-link=shared address-model=32

Where msvc-14.0 specifies that we require the Visual Studio 2015 version (VS 2015 = v14.0 = v140), and address-model=32 specifies that we require platform 32 (but the same can be done for 64 bit).

Once you have the binaries, go to Visual Studio, select the Boost Unit Testing project you have created. Go to Project properties > configuration (from the main menu) and make the following choices:

  • Set the "General > Platform Toolset" to Visual Studio 2015 (v140).

  • Include the path to the boost folder (e.g. C:\boost_1_57_0) and the path to the subfolder containing the binary files (e.g. C:\boost_1_57_0\stage\lib) in:

    • "C\C++ > Additional Include Directory"
    • and "Linker > Additional Library Directories".

I had same issue reported here. I solved the issue moving the mainTest.cpp from a subfolder src/mainTest/ to the main folder src/ I guess this was your problem too.


2>LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc120-mt-sgd-1_55.lib

In my case, bootstrap/bjam was not available (libraries were precompiled and committed to SCM) on old inherited project. Libraries did not have VC or BOOST versioning in their filenames eg: libboost_regex-mt-sgd.lib, however Processed /DEFAULTLIB:libboost_regex-vc120-mt-sgd-1_55.lib was somehow triggered automatically.

Fixed by manually adding the non-versioned filename to:

<AdditionalDependencies>$(DK_BOOST)\lib64\libboost_regex-mt-sgd.lib</AdditionalDependencies>

and blacklisting the ...vc120-mt-sgd-1_55.lib in

<IgnoreSpecificDefaultLibraries>libboost_regex-vc120-mt-sgd-1_55.lib</IgnoreSpecificDefaultLibraries>

b2 -j%cores% toolset=%msvcver% address-model=64 architecture=x86 link=static threading=multi runtime-link=shared --build-type=minimal stage --stagedir=stage/x64

Properties → Linker → General → Additional Library Directories $(BOOST)\stage\x64\lib

참고URL : https://stackoverflow.com/questions/13042561/fatal-error-lnk1104-cannot-open-file-libboost-system-vc110-mt-gd-1-51-lib

반응형