2017-10-25 5 views
0

C++에서 개발 된 (콘솔) 응용 프로그램에서 우리가 개발 한 Framework.dll에 새 함수를 추가해야합니다. Framework의이 새로운 기능은 우리에게 제공되는 정적 라이브러리의 클래스를 사용합니다.DLL에서 정적 라이브러리 사용

정적 라이브러리를 우리의 프레임 워크에 연결했는데 모든 것이 잘 동작했습니다. 그런 다음 정적 라이브러리의 클래스를 사용하도록 프레임 워크의 코드를 편집하기 시작했습니다. 프레임 워크는 경고없이 계속 빌드됩니다. Framwork.dll을 사용하는 주 앱을 실행하면 앱이 시작되지 않습니다. 이벤트가 main()으로 이동하지 않습니다. 그것은 빈 프롬프트에 잠겨 끝없이 기다립니다.

정적 lib를 응용 프로그램에 직접 연결하면 아무 문제가 없습니다. 그러나 그것은 내가 그것을 사용하고 싶은 곳이 아닙니다.

누구에게 내가 뭘 잘못하고 있는지 아이디어가 있습니까?

+0

아마도이 문제는 정적 라이브러리와 관련이 없습니다. aVast를 사용합니까? 그렇다면 그것을 비활성화하고 다시 시도하십시오. – drescherjm

+0

나를 위해 https://stackoverflow.com/questions/31446363/proper-way-to-link-static-libraries-with-dll과 동일한 작업을 수행하려고합니다. – sandwood

+0

예. 기본적으로 이것이 내가하는 일입니다. 즉 .lib를 DLL 프로젝트에 연결하십시오. 만약 내가하지 않았다면, DLL 프로젝트는 어쨌든 (미해결 된 외부 때문에) 빌드되지 않을 것이다. – NonoxX

답변

0

Hans Passant 덕분에 DllMain을 사용하여 디버깅했습니다. 그리고 네, 그것은 교착 상태였습니다. 문제는 정적 라이브러리를 DLL에 사용하는 것과 직접적인 관련이 없습니다.

정적 라이브러리에는 CRTDLLmain으로 초기화되는 정적 싱글 톤이 있습니다. 내 구현에서 더블 체크 된 잠금 패턴을 따르고, C++ 원자 펜스를 사용한다 (http://preshing.com/20130930/double-checked-locking-is-fixed-in-cpp11/에서와 같이). 그러나 그것은 C++ 11 (https://github.com/weidai11/cryptopp/issues/372)에서 실제로 잘 작동하지 않는 것 같습니다. 테스트를 위해 빠른 해결 방법을 코딩 했으므로 그렇게 보입니다. 그런 다음 lib 제조업체에 연락하여 고정 된 버전이 가능한지 확인합니다.