이렇게 가져온 함수 포인터를 ctypes.CFUNCTYPE 객체로 래핑하면 암시적 타입 변환으로 인해 예상치 못한 동작이 발생할 수 있다. 대신 가져온 함수의 restype과 argtypes 애트리뷰트를 직접 설정해서 네이티브 구현의 함수 시그니처와 매치되도록 지정하는 것이 좋다.
my_library.dot_product.restype = ctypes.c_double
vector_ptr = ctypes.POINTER(ctypes.c_double)
my_library.dot_product.argtypes = (
ctypes.c_int,
vector_ptr,
vector_ptr,
)