2016-08-23 9 views
-2

私はVisual Studioのソリューション持つ(Qtのプロジェクトから生成されたのが、私はそれが関連性のことを知らない)原因:Visual StudioのDLLリファレンスLNK2019

Application.exeは、(依存します): (依存する)
ライブラリA:
ライブラリB.

私はすべてのライブラリを通じてインテルMKLライブラリを使用して、私のプロジェクトにそれらをリンクするのVisual Studio MKLプラグインのハンドルをしましょう。私が働いていた静的LIBS、などのライブラリを構築していたが、私の重複定義の警告のおそらく何千与えていた:私はちょうどこれらの警告を無視し

1>mkl_intel_thread_dll.lib(mkl_intel_thread.dll) : warning LNK4006: __NULL_IMPORT_DESCRIPTOR already defined in mkl_intel_lp64_dll.lib(libimalloc.dll); second definition ignored 
1>mkl_intel_thread_dll.lib(mkl_intel_thread.dll) : warning LNK4221: This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library 
1>mkl_core_dll.lib(mkl_core.dll) : warning LNK4006: sdttrsb_4dfl already defined in mkl_intel_lp64_dll.lib(_sdttrsb_4dfl_lp64.obj); second definition ignored 
1>mkl_core_dll.lib(mkl_core.dll) : warning LNK4006: sdttrfb_4dfl already defined in mkl_intel_lp64_dll.lib(_sdttrfb_4dfl_lp64.obj); second definition ignored 
etc... 

を、それらの多くは、それが劇的に遅くなることがありますビルドプロセス。

だから、私は、それが(それがなかったもの)の重複定義の警告を取り除くだろうと考え、の.dllとして構築するライブラリを変更しましたが、それは次のようになり、私のライブラリ間リンカエラーを提起:

2>metricsmodel.obj : error LNK2019: unresolved external symbol "public: class QSharedPointer<class QVector<double> > __cdecl SpectralImage::GetWaveNumbers(void)" ([email protected]@@[email protected][email protected]@@@@XZ) referenced in function "public: void __cdecl MetricsModel::RunMetrics(class MetricsRunConfig *)" ([email protected]@@[email protected]@@Z) 
2>metricsmodel.obj : error LNK2019: unresolved external symbol "public: __cdecl Hyperslab::Hyperslab(class QVector<int>,class QVector<int>,class QObject *)" ([email protected]@[email protected][email protected]@@[email protected]@@Z) referenced in function "public: void __cdecl MetricsModel::RunMetrics(class MetricsRunConfig *)" ([email protected]@@[email protected]@@Z) 
2>metricsmodel.obj : error LNK2019: unresolved external symbol "public: virtual __cdecl Hyperslab::~Hyperslab(void)" ([email protected]@[email protected]) referenced in function "private: class QVector<class QString> __cdecl MetricsModel::ComputeMetrics(class QVector<class QSharedPointer<class Metric> >,class HDFDataset *,class Hyperslab *)" ([email protected]@@[email protected]@@@@[email protected][email protected]@@@@@@[email protected]@[email protected]@@Z) 
metricsmodel.objライブラリAからのものであり、未解決のシンボルがライブラリBである場合

はの.dllする静的LIBSから私のビルドを移行しようとしたとき、私は逃したステップはありますか?他のすべての依存関係が満たされているので、ライブラリAがライブラリBでリンクで定義されたシンボルを見つけることができないのは不明です。

+0

この質問は最初の5分間で2回下降しています。誰かがdownvotingと逃げるのではなく、この質問で満足または適切ではないことを説明してくださいできますか? – alayers2

+0

私はdownvoteしませんでしたが、私は質問が投稿された情報だけで答えるとは思わない。私はそれが一般的な未定義参照リンカーエラーの重複として閉じられると期待しています。 http://stackoverflow.com/questions/12573816/what-is-an-undef-reference-unresolved-external-symbol-error-and-how-do-i-fix – drescherjm

+1

一部のリンカエラーを完全に投稿してください。 – Steve

答えて

0

申し訳ありませんが、これは他の場所に回答しています。静的なlibからdllに変更するときは、DLLから共有したいすべてのシンボルに_declspec命令を追加する必要があります。

関連する問題