2010-09-08 2 views

답변

2

불행히도, 아니오. 동적 링크 라이브러리는 런타임로드에 필요합니다.

0

소스 코드에 액세스 할 수 있습니까? 아니면 적어도 헤더 파일? 그렇다면 공유 라이브러리 또는 라이브러리에 링크 된 Python 확장을 만들 수 있습니다. DLL에 대해 언급 한 이래로 저는 Windows에서 작업하고 있다고 가정합니다. This tutorial이 유용 할 수 있습니다.

3

이론상 예, 그렇습니다. 실제로는 아마 그렇지 않을 것입니다. 확실히 DLL과 같은 것은 아닙니다. 정적 라이브러리는 기본적으로 객체 파일의 모음이며, 포함될 수있는 모든 재배치 참조를 올바르게 해결하기 위해 전체 링커가 필요합니다. 정적 라이브러리를 가져 와서 해당 내용을 링크하여 공유 라이브러리를 만들 수도 있지만 정적 라이브러리가 위치 독립적 코드 (PIC)로 작성되어야한다는 것을 보장 할 수는 없습니다. 이론적으로 전체 링커가 런타임에 라이브러리를 링크 할 수있는 작업을 수행 할 이유는 없지만 실제로는 그렇게하기위한 기성품 코드가 없습니다. 가장 좋은 방법은 아마도 소스 또는 라이브러리의 공유 버전을 추적하는 것입니다.

0

정적 라이브러리가 있거나 .lib 파일이 있고 정적 라이브러리라고 가정하고 있습니까? Windows에서 .lib 라이브러리는 가져 오기 라이브러리 또는 정적 라이브러리 일 수 있습니다. 가져 오기 라이브러리는 같은 이름의 dll (예 : kernel32.dll 및 kernel32.lib)과 함께 만들어집니다. 링크시에 실행 파일의 가져 오기 주소 테이블을 채우는 데 사용됩니다. 정적 라이브러리에는 링크 할 때 실행 파일에 복사 될 코드가 들어 있습니다.

컴파일러에 액세스 할 수있는 또 다른 옵션은 정적 라이브러리를 사용하는 확장 모듈을 만드는 것일 수 있습니다. 자세한 내용은 the Python docs

을 참조하십시오.