2014-03-28 1 views
0

Visual Studio에서 링크 오류가 발생합니다. 두 가지 프로젝트가 있습니다. 하나는 정적 라이브러리이고 다른 하나는 실행 파일입니다. .lib 파일과 라이브러리 디렉터리를 찾을 수 있도록 .exe 프로젝트 속성을 지적했습니다. 아직 사용하려고하는 프로젝트의 기능을 여전히 감지하지 못하는 이유는 확실하지 않습니다. 또한 기능 서명이 일치하고 구현되었는지 확인했습니다.C++ : 다른 프로젝트의 함수 사용

내가 시도해 볼 수있는 다른 제안 사항은 무엇입니까? 또한 프로젝트 종속성 설정이 정확히 무엇입니까? .exe 프로젝트를 정적 lib 프로젝트에 의존하도록 설정하려고했지만 아무 것도 변경되지 않습니다.

1>------ Build started: Project: TestAgent, Configuration: Debug Win32 ------ 
1>  Creating library Win32\Debug\TestAgent.lib and object Win32\Debug\TestAgent.exp 
1>Registrar.obj : error LNK2019: unresolved external symbol "public: long __thiscall StudentManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@@@@[email protected]@[email protected]) referenced in function "public: void __thiscall Registrar::PopulateClasses(struct HWND__ *)" ([email protected]@@[email protected]@@Z) 
1>TestCase1.obj : error LNK2001: unresolved external symbol "public: long __thiscall StudentManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@@@@[email protected]@[email protected]) 
1>Registrar.obj : error LNK2019: unresolved external symbol "public: long __thiscall SectionManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@@@@[email protected]@[email protected]) referenced in function "public: void __thiscall Registrar::PopulateClasses(struct HWND__ *)" ([email protected]@@[email protected]@@Z) 
1>TestCase1.obj : error LNK2001: unresolved external symbol "public: long __thiscall SectionManager::Register(class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &,class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > const &)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@@@@[email protected]@[email protected]) 
1>TeacherSectionManager.obj : error LNK2001: unresolved external symbol "private: static class ATL::CStringT<unsigned short,class StrTraitMFC<unsigned short,class ATL::ChTraitsCRT<unsigned short> > > Registration::m_strServiceBaseUrl" ([email protected]@@[email protected][email protected][email protected]@[email protected]@@@@[email protected]@A) 
1>Win32\Debug\TestAgent.exe : fatal error LNK1120: 3 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 
+1

_Also, 프로젝트 종속성 설정은 정확히 무엇입니까? _ 프로젝트 빌드 순서를 설정합니다. 프로젝트 A가 프로젝트 B에 의존하면 프로젝트 B가 항상 먼저 작성됩니다. – computerfreaker

+0

두 프로젝트를 동일한 솔루션 파일에 넣은 다음 실행 프로젝트의 속성 페이지 -> 공용 속성 -> 새 참조 추가로 이동하여 실행 가능 프로젝트의 속성에 정적 라이브러리 참조를 추가합니다. – LMC

+0

또는 프로젝트가 "종속 라이브러리 링크"로 설정되어 있는지 확인하십시오. 그렇게하면 현재 프로젝트가 종속되어있는 프로젝트가 .lib 출력을 생성합니다 (DLL 가져 오기 라이브러리 또는 정적 라이브러리에 의해). 그러면 자동으로 종속성이 연결됩니다. – WhozCraig

답변

0

좋은 개요를 보려면 this blog post을 참조하십시오. 정확히 무엇이 먼저 만들어지기보다 강력합니다. 또한 라이브러리를 어디에 두는 지 알기 때문에 라이브러리 경로 목록에 하드 코딩 된 장소를 채울 필요가 없으며 각 구성마다 경로가 다를 때 특히 귀찮습니다.

"의존 대상으로 설정"이 의미하는 것은 새로운 프로젝트 - 프로젝트 참조 인 이 아니며 솔루션 수준 빌드 순서/종속성 작성 대화 상자가 아닌지 확인하십시오.

연결에서 자세한 출력을 켜서 실제로 어떤 입력을 확인할 수 있습니다. 이 경우 로깅 된 명령 줄을 보는 것으로 충분합니다. 원하는 lib가 포함되어 있다면 컴파일러 옵션에 영향을 미치거나 이름을 변경하는 매크로가있을 수 있습니다.

관련 문제