- ctypes를 사용하여 파이썬에서 래퍼 클래스를 생성해야합니다. 나는 지난주에 몇 주 동안 연구하고 코딩을 해왔으며 누구든지 에 기꺼이 질문 할 의향이 있습니다. 이 C 코드는 내가 작업중인 코드를 복제하는 최선의 방법이므로, 제시된 방식으로 구조화하지 않았다는 것을 명심하십시오!
Python CTypes _argtypes에는 from_params 메소드가 없습니다.
:import ctypes from ctypes import * srclib = ctypes.CDLL('/path/DogHouse.so') class dog(Structure): _fields_ = [ ("name", ctypes.c_char*10), ("color", ctypes.c_char*10)] pug = dog("doug", "white") #- Not sure if I need to define arg and res types -# srclib.log_dog.argtypes = [pug] #srclib.log_dog.restype = srclib.log_dog(pug)
- 나는 파이썬과
- 리눅스
Question: When I try to run the following python code, I get this error:
File "pydog.py", line 21, in
srclib.log_dog.argtypes = [pug]
TypeError: item 1 in argtypes has no from_param method
pydog.py에 파이썬 2.7.2, 및 GCC 4.4.2를 사용하는 ctypes 라이브러리 모두 비교적 새로운 오전
DogHouse.h :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* opaque handle */
typedef struct __dog_file dogfile;
/* Input data structure */
typedef struct __dog_input{
const char *name;
const char *color;
}dog_input;
/*Logs the dog_input data into the dog_file struct */
dog_file *log_dog(const dog_input *data);
DogHouse.c : 나는 "from_param"에 대한 구문을 찾는 시도했지만 특정하는 ctypes하면 내가 확실하지 않다 (I 필요한 구체적으로 무엇을 찾을 수 없습니다
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "DogHouse.h"
struct __dog_file{
const char *name;
const char *color;
};
dog_file *log_dog(const dog_input *data){
dog_file *df;
df->name = data->name;
df->color = data->color;
return df;
}
int main(int argc, char **argv){
}
또는 표준 파이썬 라이브러리.
이것은 내 첫 번째 질문이므로, 내가 무엇인가를 바꿀 필요가 있다면/좀 더 분명히 알려주세요! 모든 도움을 미리 감사드립니다.
마크가 실제 오류를 지적하지만, 명확하게는,'from_param'는하는 ctypes 유형 함수 인수를 변환하는 ctypes에 의해 호출 클래스 방법이다. 함수 포인터에'argtypes'를 할당하면 각 타입의'from_param' 변환기를 참조해야합니다. 표준 타입은 포인터 타입에 대해'None','c_char_p' 나'c_wchar_p '에 대한 파이썬 문자열,'c_int'에 대한 정수 등의 기본적인 변환을하는이 메소드의 구현을 가지고 있습니다. – eryksun