2016-09-24 32 views
0

大きなブーストが必要なプログラムをVS2015にアップグレードし、1.61をブーストしています。プログラムは64ビットプログラムです。 - x6464ビットプログラムでブーストをブーストする

Boostは、64ビットモードで間違ったライブラリを探しているようです(あるいは、私が何か愚かなことをした可能性があります)。私はVS2015プラットフォームのための適切なブーストライブラリを構築したと信じています。

静的なリンクが必要なWIN32モードで、小さなブースト機能を作りました。これはうまく動作します......

#include <boost/regex.hpp> 
#include <iostream> 
#include <string> 

void test() 
{ 
std::string line; 
boost::regex pat("^Subject: (Re: |Aw:)*(.*)"); 
    while (std::cin) 
    { 
    std::getline(std::cin, line); 
    boost::smatch matches; 
    if (boost::regex_match(line, matches, pat)) 
     std::cout << matches[2] << std::endl; 
    } 
} 

しかし、私はこれをx64でコンパイルしたいときに不平を言います。はい両方のプラットフォームで#includeとリンクパスを正しく設定しました。図書館はそこにはありません。

1> LINK:致命的なエラーLNK1104:ファイルを開くことができません 'libboost_regex-vc140-MT-GD-1_61.lib'

libboost_regex-vc140-MT-1_61.lib

+0

名の '-gd'一部は、デバッグを意味し、リリースモードでプログラムをコンパイルするか、私が持っている必要があり – PeterT

答えて

0
  1. チェックあなたがあればあなたのソリューションをビルドしているかどうか確認してください(Visual Studioのプロジェクト - >リンカ - >一般 - >追加ライブラリフォルダ)
  2. 64ビット
  3. 自動リンクを使用していない場合は、プロジェクトにライブラリ依存関係を追加している場合は、チェッキしてください(プロパティ - >リンカ - >入力 - >追加の依存関係)
+0

デバッグモードでブーストライブラリをコンパイルしてみてくださいx64 libboost_regex-vc140-mt-1_61.libとlibboost_regex-vc140-mt-gd-1_61.lib用にビルドされています。C:\ boost \ boost_1_61_0> b2 -j8ツールセット= msvc-14.0アドレスモデル= 64アーキテクチャ= x86 リンク=静的スレッド=マルチランタイムリンク=共有 - ビルドタイプ=最小ステージ - ステージドステージ=ステージ/ x64。私は今、最初からコンソールアプリケーションを作ろうとしました。これは動作します! 64ビットモードで実行します。ここでは、libboost_regex-vc140-mt-1_61.libを探します。しかし、Windowsアプリケーションは、そこにないものを探します。 年齢層/段階/ x64 –

+0

あなたはどのように答えを改行しますか? –

0

正しいライブラリセットをビルドする必要があります。コンパイラが求めている。構築中に使用するビルド引数(プロパティ)を取得するには、library naming chartを参照する必要があります。あなたの場合は、 "lib - mt-gd-1_61.lib"とタグ付けされたライブラリを探しています。どのチャートを読んだことは、あなたがして構築する必要があるだろうと言う:

link=static threading=multi runtime-debugging=on variant=debug