더북(TheBook)

마지막으로 이 두 배열을 사용해 dot_product 함수를 호출한다. 이때 ctypes.cast 도우미 함수를 사용해 배열의 첫 번째 원소의 주소를 전달해야 한다. C 규약을 따르면 파이썬 vector3 객체의 주소가 아니라, 배열 첫 번째 원소의 주소를 전달해야 하기 때문이다. 반환 값은 ctypes가 자동으로 변환하기 때문에 별도의 타입 캐스팅이 필요 없다.

result = my_library.dot_product(
    3,
    ctypes.cast(a, vector_ptr),
    ctypes.cast(b, vector_ptr),
)
print(result)

 

>>>
-39.35