2016-12-14 28 views
0

次のように私はプロジェクトのUtilsでクラスを持っている:未解決の外部シンボルのリンクエラー

Maths.h

class __declspec(dllexport) Maths 
{ 
public: 
    static const double c_epsilon; 

    ... 
} 

Maths.cpp

const double Maths::c_epsilon = DBL_EPSILON; 

私はこのクラスを使用する(多くの)他のプロジェクトを持っています(そして、c_epsilon c onstant)。

ほとんどすべての他のプロジェクトをビルドすると、リンク問題なし...しかし、カップルがエラーで失敗:

LNK2001 unresolved external symbol "__declspec(dllimport) public: static double const Maths::c_epsilon" ([email protected]@@2NB)

2失敗したプロジェクトは、両方のGoogleテストプロジェクトであり、実行可能ファイルを生成する以外(の代わりに、 DLL)は、他のすべてのプロジェクトと同じように設定されているようです。

失敗したプロジェクトは、間違いなくUtils.libファイルを指定します。

これはプロジェクト設定上の問題(他のプロジェクトは問題ありません)だと思いますが、問題を解決するための設定が見つかりません。

+0

ソリューション内のバイナリ間の依存関係を定義していますか? –

+0

@KirillKobelevはい、ありがとうございます。 – grae22

+0

AFAIK .libファイルを指定する必要はありません。 Libファイルは、ソリューションの一部ではないDLLに使用する必要があります。 –

答えて

1

出力フォルダ$(OutDir)を指定した問題のあるプロジェクトは、追加の依存関係を見つけるためのパスとして表示されます。これは、ビルドのこの時点では、出力フォルダにはビルド後のステップ(おそらく見直されるべきプロセス)としてコピーされる '古い' libファイルが含まれているため、問題があります。

'古い' libファイルは、定数が実際に 'const'(単に静的)として宣言されていないビルドからのものでした。これは変更されたため、未解決の外部シンボルエラーです。

関連する問題