2012-12-02 2 views
1

으로 알려줍니다. 현재 현재 C++ VS2010에서 dll 파일을 생성하고 있습니다. 정적 DLL 또는 동적 DLL을 생성하고 있는지 알고 싶습니다. 내 코드에는 .def 파일이 있고 내 보낸 모든 함수는 해당 def 파일에 번호가 매겨져 있습니다. 또한 내 함수는 __declspec (dllexport)를 사용하여 내보내집니다.동적 DLL에서 정적 DLL을 코드

답변

1

DLL을 생성하면 동적 링크 라이브러리가 생성됩니다. 그래서 당신이 그것을 생성하는 방법에 독립적으로, 그것은 동적으로로드됩니다.

그러나 cosuming 응용 프로그램에서 함수에 액세스하는 방법에는 차이가 있습니다.

가져 오기 라이브러리 (yourDllName.LIB)를 사용하면 응용 프로그램이로드 될 때 DLL이로드됩니다. 이것은 마치 정적 라이브러리를 사용하는 것과 비슷한 느낌을 &에 제공합니다.

LoadLibrary 및 GetProcAddress를 사용하여 함수에 대한 포인터를 가져올 수도 있습니다. 그런 다음 DLL 진입 점에 대한 이러한 포인터를 사용하여 함수를 호출 할 수 있습니다.

모듈 내보내기 파일 (.DEF)을 선택하거나 함수를 내보내기 테이블에두기 위해 __declspec (dllexport) 메서드를 사용하는 경우에는 신경 쓰지 않습니다. 혼란을 피하기 위해 한 가지 방법을 사용하는 것이 좋습니다.

+0

* .def 파일은 상관 없습니다. def 파일없이 이름 꾸미기가 있습니다. def 파일을 사용하면 호출 규칙 또는 디버그/릴리스와 독립적으로 장식되지 않은 이름을 지정할 수 있습니다. – stefan

-1

C++ 코드에서 _DLL 기호가 정의되어 있는지 확인할 수 있습니다.

#ifdef _DLL 

정적 라이브러리를 작성할 때 기능에 서수를 할당 할 필요가 없다고 생각합니다.

+0

-1에 대한 주석을 남겨주십시오. 나는 물지 않는다, 정직하다. –

관련 문제