簡體   English   中英

Boost 1.53.0-構建VC ++ 11時出現LNK1104錯誤

[英]Boost 1.53.0 - LNK1104 Error when building VC++11

我正在嘗試首次構建Boost v.1.53,並收到以下錯誤消息:

錯誤1錯誤LNK1104:無法打開文件'libboost_date_time-vc110-mt-gd-1_53.lib'C:\\ Users \\ ryant_000 \\ documents \\ visual studio 2012 \\ Projects \\ Phase 2 \\ Phase 2 \\ LINK Phase 2

我的包含目錄中包含C:.... \\ boost_1_53_0,鏈接器菜單上的其他依賴項中包含C:... \\ boost_1_53_0 \\ stage \\ lib。

在搜索文檔后找不到鏈接的哪個文件?

非常感謝。

盡管所有這些都是可愛的,並且聲稱它是僅標頭的集合,但boost確實需要將某些部分內置到庫中才能使用。 這些庫之一是date_time Boost的友好之處在於,當您#include一個基於編譯器選項的庫時,它將自動為您鏈接正確的.lib文件。 需要注意的是,您需要先構建庫。

您缺少的文件是libboost_date_time-vc110-mt-gd-1_53.lib ,從命名約定中我們可以看到,它是使用調試運行時的VC11多線程調試版本(對您來說是Visual C ++ 2012和我)。 您可能根本沒有構建特定版本的庫-默認情況下,boost將執行最小構建,跳過庫的多個版本。 盡管需要一些時間,但我發現最好以boost的形式構建所有內容 ……嘿,硬盤空間很便宜!

打開Visual Studio命令提示符,然后轉到boost目錄:

C:\> cd boost_1_53_0
C:\boost_1_53_0\> bootstrap.bat vc11
C:\boost_1_53_0\> .\b2 --build-type=complete toolset=vc11
... now go and make yourself a cup of tea

這將需要一些時間,但是它應該構建每個庫的所有組合。 您可以通過在.\\b2命令行中添加例如-j4來在多核計算機上稍微加快速度,這將一次生成四項內容。

vc11部分定義了要使用的工具集,如果您有兩個編譯器,這將非常方便-從理論上講,它不是必須的(boost可以很好地找到正確的工具集),但是確保它不會受到損害。

如果要測試這是問題所在,則可以指定僅構建缺少的date_time庫的所有組合:

C:\boost_1_53_0\> .\b2 --build-type=complete toolset=vc11 --with-date_time
... now go and make yourself a cold drink, this won't take so long

更改boost文件夾(已下載並解壓縮)中以下文件的內容

文件夾:boost_1_54_0 \\ tools \\ build \\ v2 \\ tools文件:1. msvc.jam

內容已更改:

對於32位:toolset.flags msvc LINKFLAGS控制台:/subsystem:console,5.01;

對於64位:toolset.flags msvc LINKFLAGS控制台:/subsystem:console,5.02;

  1. msvc.pycontent已更改:對於32位:toolset.flags('msvc','LINKFLAGS',['console'],['/subsystem:console,5.01'])

對於64位:toolset.flags('msvc','LINKFLAGS',['console'],['/subsystem:console,5.02'])文件夾:boost_1_54_0 \\ tools \\ build \\ v2 \\ engine文件:1.構建。 bat內容已更改:對於32位/ 64位:1.完全像修復Visual Studio路徑一樣,而不是將“%ProgramFiles%-更改為%ProgramFiles(x86)%

   2.   Add " /D _USING_V110_SDK71_ " to BOOST_JAM_CC =cl command before Skip_VC11Open vs2012 developer Command prompt and type the following commands

**根據您的安裝更新7.1A SDK路徑

調用“%ProgramFiles(x86)%\\ Microsoft Visual Studio 11.0 \\ VC \\ bin \\ vcvars32.bat”

設置INCLUDE =%ProgramFiles(x86)%\\ Microsoft SDKs \\ Windows \\ 7.1A \\ Include;%INCLUDE%

設置PATH =%ProgramFiles(x86)%\\ Microsoft SDKs \\ Windows \\ 7.1A \\ Bin;%PATH%

設置LIB =%ProgramFiles(x86)%\\ Microsoft SDKs \\ Windows \\ 7.1A \\ Lib;%LIB%

引導程序

根據操作系統類型(32/64位)選擇命令

對於32位:

b2工具集= msvc-11.0變量=調試,發布鏈接=共享運行時-鏈接=共享地址模型= 32

對於64位:

b2工具集= msvc-11.0變量=調試,發布鏈接=共享運行時-鏈接=共享地址模型= 64

要編譯任何示例以發布和調試版本,請遵循以下步驟:

打開vs2012開發人員命令提示符,然后鍵入以下命令

調用“%ProgramFiles(x86)%\\ Microsoft Visual Studio 11.0 \\ VC \\ bin \\ vcvars32.bat”

設置INCLUDE =%ProgramFiles(x86)%\\ Microsoft SDKs \\ Windows \\ 7.1A \\ Include;%INCLUDE%

設置PATH =%ProgramFiles(x86)%\\ Microsoft SDKs \\ Windows \\ 7.1A \\ Bin;%PATH%

設置LIB =%ProgramFiles(x86)%\\ Microsoft SDKs \\ Windows \\ 7.1A \\ Lib;%LIB%

轉到示例目錄:例如:boost_1_54_0 \\ libs \\ test \\ tools \\ console_test_runner

鍵入以下命令

\\ boost_1_54_0 \\ bjam.exe --v2工具集= msvc-11.0變體=調試,發布鏈接=共享線程=多個運行時鏈接=共享

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM