동적 (.dll)에서 바인딩하려는 정적 (.a/.lib) 라이브러리가 있습니다. 정적 라이브러리가 libColors.a
이고 동적이 SWC.dll
이라고 가정 해 보겠습니다. 이제 libColors.a
프로젝트 속성을 정적 라이브러리를 만들도록 변경합니다. 빌드하고 - .dll
을 찾지 못했습니다. 예상되는 .o 및 .a 파일 만 찾았습니다. 내 SWC.dll
프로젝트로 전환하고 동적 라이브러리를 만들기 위해 속성을 변경하고 .a 파일을 만들려면 확인란을 선택하십시오. libColors.a
--build it -을 연결하면 .dll 파일이 만들어집니다. (또한 class
에 __declspec(import/export)
사양을 넣었음을 참고하십시오.)Code :: Blocks에서 동적 라이브러리에 정적 라이브러리를 바인딩하는 방법
이제 SWC.dll
을 실행 파일에서 사용하고 싶습니다. 그러나 실행 파일에 SWC.h
파일 만 포함하면 정의되지 않은 참조가 많습니다. SWC.h
에 아무 기능도 호출하지 않았으므로 여기에 문제가있는 것으로 보입니다. 그래서, 내 .exe 빌드 옵션에 SWC.a
옵션을 추가하면 오류없이 빌드됩니다. 그러나 내가 그것을 실행할 때, 그것은 내가 Colors.dll
을 필요로했다라고 말한다? 나는 무엇을 놓치나요?
제 질문을 읽어 주셔서 감사합니다. 그러나 나는 이미 문제가 무엇인지 알아 낸다. .lib 파일의 오래된 버전에 연결합니다. 어쨌든, 도구의 이름은 무엇입니까? 필자는이 문제가 다시 발생하면 미래 프로젝트에 도움이 될 것이라고 생각합니다. 특정 프로그램에 모두 링크되어있는 모든 라이브러리를 확인합니까? – mr5
@ mr5 도구 링크를 추가했습니다. 'objdump.exe'는 mingw btw와 함께 제공되는 명령 행 도구입니다. 위에서 언급 한 도구 중 하나를 사용하여 주어진 실행 파일이나 dll이 무엇에 의존하는지 확인할 수 있습니다. – greatwolf