2016-08-23 2 views
-2

내가 비주얼 스튜디오 솔루션이 (A Qt는 프로젝트에서 생성을,하지만 난 그게 관련이 있음을 알 수없는) 원인 :비주얼 스튜디오 DLL 참조 LNK2019

의 application.exe가 (에 따라 다름) : (에 따라 다름)
도서관 A :
도서관 B.

나는 모든 라이브러리를 통해 인텔 MKL 라이브러리를 사용하고, 내 프로젝트에 사람들을 연결하는 비주얼 스튜디오 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에서 라이브러리 B에 정의 된 기호를 찾을 수없는 이유가 확실하지 않습니다.

+0

그래서이 질문은 처음 5 분 안에 두 번 downvoted되었습니다. 누군가가 downvoting 및 도망 대신이 질문에 만족스럽지 않거나 적절한 설명 할 수 있을까요? – alayers2

+0

나는 downvote하지 않았다 그러나 나는 질문이 단지 게시 된 정보만으로는 답할 수 없다고 생각한다. 나는 그것이 대중적인 정의되지 않은 참조 링커 오류 질문의 복제본으로 폐쇄 될 것으로 기대한다. http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix – drescherjm

+1

일부 링커 오류를 게시하십시오. – Steve

답변

0

죄송합니다.이 답변은 다른 곳에서 제공됩니다. 정적 lib에서 dll로 변경할 때 DLL에서 공유하려는 모든 심볼에 _declspec 명령어를 추가해야합니다.