2013-04-08 5 views
2

사용자 정의 .dll 파일에서 함수를 호출하려고합니다. 그러나 SDK.dll 라이브러리를로드하려고하면 다음 오류가 발생합니다. 나는 여기에있는 표시를 따릅니다 : Python import dllPython NameError : 'ctypes'이름이 정의되지 않았습니다.

누구가 문제인지 압니까? 나는 MAC 환경에 대한이 문제의 참고 문헌만을 발견했다.

>>> from ctypes import * 
>>> lib = ctypes.WinDLL('C:/Develop/test/SDK.dll') 

Traceback (most recent call last): 
    File "<pyshell#19>", line 1, in <module> 
    lib = ctypes.WinDLL('C:/Develop/test/SDK.dll') 
NameError: name 'ctypes' is not defined 

답변

4

단지 ctypes :

>>> import ctypes 
>>> lib = ctypes.WinDLL('C:/Develop/test/SDK.dll') 
+0

고마워. 이제 'Traceback (가장 최근에 마지막으로 호출) : 파일 ", 줄 1, lib = ctypes.WinDLL ('C : /Develop/test/SDKApplication/Debug/SDKCore.dll ')에 다른 오류가 발생했습니다. 파일 : "C : \ Python27 \ lib \ ctypes \ __init__.py"365 행의 __init__ self._handle = _dlopen (self._name, mode) Windows 오류 : [오류 193] % 1이 (가) 유효한 Win32 응용 프로그램이 아닙니다. ',하지만 내 파이썬이 32 비트이고 dll이 64라는 사실 때문에 이것이 가능할 것이라고 생각합니다. – toni

4

변경

from ctypes import * 

import ctypes 

이전 수입을 현재 네임 스페이스로 ctypes에서 모든 이름

합니다. 일반적으로 나쁜 습관으로 간주되며 피해야합니다.

>>> from ctypes import * 
>>> lib = WinDLL('C:/Develop/test/SDK.dll') 

을가 가져 오는 것입니다 할 수있는 또 다른 (그리고 NPE에서 언급 한 바와 같이 일반적으로 더 나은) 방법 : 직접 WinDLL를 호출해야한다, 그래서 당신은, 현지 네임 스페이스에 ctypes 모듈에서 모든 당기는 from ctypes import * 이렇게함으로써

+0

감사합니다. 이제 'Traceback (가장 최근에 마지막으로 호출) : 파일 ", 줄 1, lib = ctypes.WinDLL ('C : /Develop/test/SDKApplication/Debug/SDKCore.dll ')에 다른 오류가 발생했습니다. 파일 : "C : \ Python27 \ lib \ ctypes \ __init__.py"365 행의 __init__ self._handle = _dlopen (self._name, mode) Windows 오류 : [오류 193] % 1이 (가) 유효한 Win32 응용 프로그램이 아닙니다. ',하지만이게 내 파이썬이 32 비트이고, dll이 64라는 사실 때문에 생긴 것 같아. – toni

관련 문제