2012-02-16 2 views
0

win32wnet, win32file, win32con 및 기타와 같은 몇 가지 창 API 모듈을 사용하고 있지만 그 중 몇 가지 방법 만 사용하고 있습니다.특정 Win32 API 호출에 필요한 Windows 라이브러리를 어떻게 확인할 수 있습니까?

내 응용 프로그램을 py2exe (bundle_files == 3)로 패키징하고 있으며 다른 Windows 플랫폼에서 실행되는 경우 히트 앤 미스입니다.

나는 다음과 같이하고 싶다 : 1) 필요한 모든 라이브러리와 적절한 라이브러리. 가능하다면 OS에 이미 설치되어있는 것에 의존하고 싶지 않습니다.

또는 : 2) 기존 DLL의 적절한 버전에 내 앱을 연결하는 매니페스트를 작성하고 싶습니다. (DLL을 포장하는 것은 정당하지 않은 경우) 런타임에 파이썬에서 제공

오류가 모호한 : 워드 프로세서 (예 : help(win32wnet)가)

ImportError: DLL load failed: The specified procedure could not be found. 

많이 사용 될 것 같지 않습니다.

내 기본 Windows 라이브러리가 앱에서 필요로하는 것을 어떻게 식별 할 수 있습니까?

+0

DLL? –

+0

@ Toby Allen'win32wnet.WNetAddConnection2'은 하나입니다. 나는 다른 사람들의 긴 목록을 가지고있다. 나는이 funcs (이미 찾은 해결책 - 내 대답 참조)에 사용되는 libs를 찾는 일반적인 해결책을 원합니다 (에드) – Paul

답변

5

Microsoft에서 응용 프로그램의 일부로 코어 Windows DLL을 제공하는 것이 허용되지 않을 수도 있습니다.

여러 버전이있는 comctrls32와 같은 것이 아니라면 컴퓨터에서 사용할 수있는 소프트웨어를 작성해야합니다.

+0

좋은 지적입니다. 그러나 그것은 질문에 대답하지 않습니다. .pyd의 – Paul

+1

+1의 종속 경로를 결정하는 방법을 찾으려면 처음 질문했던 질문에 대한 대답을 찾으십시오. –

+0

문제를 해결하지만 해결하지 못합니다. 나 : "박사님, 제가 할 때 아파요." Doc : "하지 마." – Paul

1

.pyd (이 경우 win32wnet)에 dependency walker을 사용하면 .dll 종속성이 손상되었는지 확인할 수 있습니다. 그런 다음 1) 패키지에 매니페스트를 포함하거나 (네이티브 라이브러리가있는 경우) 2) 패키지에 .dll을 번들로 묶습니다 (MS에서 허용하는 경우).

+0

MS가 허용 한 경우에도 DLL을 번들 할 수 없습니다. 작동하지 않습니다. xp에서 비스타 user32를 넣을 수는 없습니다. 작동하지 않습니다. 기본 Win32 DLL을로드하는 데 필요한 매니페스트가 필요하지 않습니다. 당신의 실제 문제는 당신이 생각하는 것이 아닙니다. –

+0

@David Heffernan 그러면 py2exe 번들에 .dll 패키지가 번들되는 이유는 무엇입니까? – Paul

+0

파이썬 DLL을 번들로 생각합니다. Python27.dll 및 C 런타임에 필요한 DLL과 비슷합니다. 또한 필수 PYD 등. Windows DLL을 번들해서는 안됩니다. 그건 안돼. –