티스토리 뷰
- 먼저 MSVC++(Express 버전)에서 dll을 만든다. dll의 내용이 되는 소스는 다음과 같다.
// PyDll.cpp -> PyDll.dll struct St { int x; char * str; double f; }; extern "C" __declspec(dllexport) void func(void* st) { St temp = {1, "Hello", 3.14}; *((St*)st) = temp; }
- Python에서 dll을 import한 다음 dll에 정의되어 있는 구조체와 동일한 구조를 갖는 ctypes.Structure를 정의한다.
그 다음 정의한 ctypes.Structure의 객체를 byref()를 통해 dll에 있는 함수에게 넘겨준다.
from ctypes import * lib = cdll.LoadLibrary("PyDll.dll") class Obj(Structure) : _fields_ = [("nNum", c_int), ("lpszStr", c_char_p), ("fFloat", c_double)] obj = Obj() lib.func(byref(obj))
- 결과는 다음과 같다.
>>> obj.nNum 1 >>> obj.lpszStr 'Hello' >>> obj.fFloat 3.14 >>>
'Python > 요리 방법' 카테고리의 다른 글
Eclipse + Python (0) | 2011.09.22 |
---|---|
CentOS 5.6 에서 Python2.6 + PyQt4 + matplotlib 설치하기 (0) | 2011.08.31 |
ctypes를 이용하여 MSVCRT의 qsort로 python 객체 배열 정렬(sorting)하기 (0) | 2009.11.04 |
Calling Windows API using ctypes and win32con (0) | 2009.10.28 |
Python에서 ctypes을 이용하여 구조체(Structure) 정의 할 때 정렬값(byte order) 지정하기 (0) | 2009.10.27 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- C++
- QPrinter.Letter
- armadillo c++
- Visual C++
- pandas
- structure
- tensorflow
- GSX 1000 pro
- ctypes
- dll
- volume dial
- QPrinter.A4
- TensorBoard
- QT
- 볼륨 조절
- 이상한 문자
- 설치
- Accelerated C++
- MSVC++
- TCGA
- PyQt
- destructor
- Item 9
- GSX 1200 pro
- how to solve it
- cython
- matrix multiplication
- 볼륨 낮춤
- CanDrA
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함