一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
keito
記事: 33
登録日時: 3年前

一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)

#1

投稿記事 by keito » 3年前

プログラミング歴はC言語1年半、C++2週間程度です。説明不足や誤用・誤植があったらすみません・・・・・・。

拡張ライブラリBoost(1.61.0.0)を使って処理時間の計測などの機能を使いたいのですが、ディレクトリパスを通したのにも関わらずビルドに失敗してしまいます。

IDE / Visual Studio 2015 Express for Windows Desktop [Visual C++ 2015]
(↓処理時間の計測、 https://boostjp.github.io/tips/timer.htmlと同じ)

コード:

//処理時間の計測
//インクルード ディレクトリ パス > D:\ConsoleApplication1\packages\boost.1.61.0.0\lib\native\include
#include <iostream>
#include <cmath>
#include <boost/timer/timer.hpp>

int main()
{
	boost::timer::cpu_timer timer; // 時間計測を開始

	for (long i = 0; i < 100000000; ++i) {
		std::sqrt(123.456L); // 時間のかかる処理
	}

	std::string result = timer.format(); // 結果文字列を取得する
	std::cout << result << std::endl;
}
1>------ すべてのリビルド開始: プロジェクト:ConsoleApplication1, 構成:Debug Win32 ------
1> test.cpp
1>LINK : fatal error LNK1104: ファイル 'libboost_timer-vc140-mt-gd-1_61.lib' を開くことができません。
========== すべてリビルド: 0 正常終了、1 失敗、0 スキップ ==========

その他に、
多倍長整数(boost/multiprecision/cpp_int.hpp)、統計処理(boost/accumulators/accumulators.hpp等)などはインクルードできましたが、
日付の計算(boost/date_time/gregorian/gregorian.hpp、乱数(boost/random.hpp等)などはインクルードするとビルドに失敗してしまいます。

リンカツールエラ―LNK1104については調べましたが、結局どこがどう問題なのかが分からずに困っています。

どうか分かりやすく対策法を教えて下さると助かります

アバター
tk-xleader
記事: 153
登録日時: 8年前
連絡を取る:

Re: 一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)

#2

投稿記事 by tk-xleader » 3年前

Boost.Timerはビルド済みのバイナリが必要なのですが、ビルド済みのバイナリは用意しましたでしょうか?

もししていない場合、Boostライブラリのビルド方法にしたがって自分でバイナリを作成するか、もしくはhttps://sourceforge.net/projects/boost/ ... -binaries/からバイナリをダウンロードするかして用意することになります。

既にバイナリは用意しているということであれば、リンカへの設定でライブラリパスを指定することでリンクできるようになると思います。

derok
記事: 51
登録日時: 6年前

Re: 一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)

#3

投稿記事 by derok » 3年前

https://boostjp.github.io/tips/build_link.html
にある通りboostの一部ライブラリはビルドが必要です。
https://boostjp.github.io/howtobuild.html
を参考にビルドするか、VS 2015ならプロジェクト->NuGetパッケージマネジャーからBoostを検索しインストールする手もあります。
また、時間の測定ならstd::chrono
http://ja.cppreference.com/w/cpp/chrono
乱数ならstd::random
http://cpprefjp.github.io/reference/random.html
https://cpplover.blogspot.jp/2009/11/c0xrandom.html
を使うという方法もあります。

keito
記事: 33
登録日時: 3年前

Re: 一部の拡張ライブラリを使うとビルドに失敗する(リンカツールエラ―LNK1104)

#4

投稿記事 by keito » 3年前

回答ありがとうございます。
色々あって1日掛かってしまいましたが、以下の手順で無事ビルドすることが出来ました、ありがとうございます。

1.http://www.boost.org/users/download/#liveからダウンロード
2.VS2015 x86 Native Tools コマンド プロンプトを起動、以下のコマンドを入力
pushd (解凍したディレクトリ先)
  例) D:\にboost_1_61_0ファイルを作成した場合 → pushd D:\boost_1_61_0
3.64ビット版では b2.exe --toolset=msvc-14.0 --build-type=complete architecture=x86 address-model=64 -j 8 stage
32ビット版では b2.exe --toolset=msvc-14.0 --build-type=complete stage
  を入力。
4.Visual Studioのプロパティページを開き、VC++ ディレクトリ → インクルードディレクトリを指定
  例) D:\にboost_1_61_0ファイルを作成した場合 → D:\boost_1_61_0;$(IncludePath)
5.リンカ― → 追加のライブラリディレクトリを指定
  例) D:\にboost_1_61_0ファイルを作成した場合 → D:\boost_1_61_0\stage\lib
6.出来ました

閉鎖

“C言語何でも質問掲示板” へ戻る