- PR -

VS2005のリンクエラーについて

投稿者投稿内容
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2007-11-26 17:03
いつもお世話になっております。

リンカの設定で質問です。(VisualStudio2005英語版を使用)
新しいプロジェクトをソリューションに追加し、(VS2003からコンバート)
boostのフォルダ位置が異なっていたので
プロジェクト->Linker->GeneralからAdditional library Directoriesに
新しいboostのフォルダ位置を指定しました。

しかし、ビルドすると
「fatal error C1083: Cannot open include file: 'boost/static_assert.hpp': No such file or directory」
とでてビルドが終わってしまいます。

新しくフォルダを指定するのにVS2005で
リンカの指定位置はあっていると思うのですが
ほかに設定が必要なのでしょうか?
リンカに煩わされてます。(;
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-11-26 17:22
「include できない」だから、リンクじゃなくてコンパイル時のエラーでは?
_________________
囚人のジレンマな日々
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2007-11-26 17:48
はい、確かにインクルードするときにBOOSTを見に行っています。

#include <boost/static_assert.hpp>

ここで最初のエラーがでて終了します。
なので、これが見に行けないようになっています。
他のプロジェクトは見に行けるのですが
なぜか新しく入れたプロジェクトは見にいけません。

それでプロジェクトの設定かリンカではないかと思っているのですが。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-11-26 18:03
リンクエラーではないので、リンカの設定をいじっても駄目ですよ、という事です。

include の検索パスは以下。優先順位もこの順です。

ソースのあるディレクトリ。
コンパイル時にオプションで指定。cl.exe なら /I 。
環境編集の INCLUDE のパス。

で、お望みの方法は、2番目の検索パスを IDE で設定すれば良いです(環境変数に設定してもいいですけど)。環境がないのではっきり言えませんが、どこかに「インクルードディレクトリの〜〜」というのがあるかと思いますので、それに boost のソースを置いているディレクトリを設定して下さい。
_________________
囚人のジレンマな日々
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2007-11-26 18:31
それもうまくいかないです。
なぜでしょう?

たぶんおっしゃっているのはAdditional Include directoryのことだと思いますが
BOOSTのヘッダーファイルがあるフォルダまで設定してもコンパイル時に同じエラーが出ます。
たとえば、
#include <boost/static_assert.hpp>
#include <boost/functional.hpp>
がありstatic_assertでエラーがでるので
たとえばコメントします。

//#include <boost/static_assert.hpp>
#include <boost/functional.hpp>
するとfunctionalで同じエラーが出ます。

今現時点でリンカの場所でboostの$(api_path)\misc\boost\1.34.1
みたいなかたちで指定してあげています。

それでほかのプロジェクトはうまくいっているみたいです。
が、なぜか新規にインポートしたプロジェクトはここでこけます。

いろいろ手を尽くしてますがなぜなのかよくわからないです。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-11-26 19:47
リンカではないです、と何度も言っていますが、何故まだ「リンカの設定」と言うのでしょうか。

$(api_path) なんてやらないで、普通に絶対パスを設定してみましたか?

$(api_path) が何を指しているのかこちらでは分かりません。

というか勝手に設定しているので、あなたの言う「ほかのプロジェクト」は $(api_path) を設定しているが、問題になっているプロジェクトは $(api_path) を設定していないだけじゃないですか?

_________________
囚人のジレンマな日々
butthead
大ベテラン
会議室デビュー日: 2004/01/14
投稿数: 162
投稿日時: 2007-11-26 20:27
新しいプロジェクトを作成
してインクルードファイルを設定するとうまくいきました。

インクルードファイルの設定を
しなかった場合にどのような設定をすれば
他のフォルダにあるファイルを読むことができるのでしょうか?

どうにもそこが不思議でならないです。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2007-11-26 20:32
2番目のレスで言った

ソースのあるディレクトリ。
コンパイル時にオプションで指定。cl.exe なら /I 。
環境編集の INCLUDE のパス。

がルールです。
返事を流し読みしないで、ちゃんと読んでくれてますか?

_________________
囚人のジレンマな日々

スキルアップ/キャリアアップ(JOB@IT)