這可能有點愚蠢,但我試圖用ctypes調用一個接收復雜向量作爲參數的函數。但在ctypes中沒有c_complex類。 有人知道如何解決這個問題嗎?ctypes中的複數
編輯:我指的python的ctypes的,萬一有其他....
這可能有點愚蠢,但我試圖用ctypes調用一個接收復雜向量作爲參數的函數。但在ctypes中沒有c_complex類。 有人知道如何解決這個問題嗎?ctypes中的複數
編輯:我指的python的ctypes的,萬一有其他....
如果c_complex是一個C結構,你必須在文件的定義,或者你可以使用ctypes的一個頭文件組成一個兼容的類型。儘管不太可能,但也可能c_complex是ctypes已經支持的類型的typdef。
將需要更多信息,提供一個更好的答案...
使用c_double或c_float兩次,一次爲真,一次爲假。 例如:
from ctypes import c_double, c_int
dimType = c_int * 1
m = dimType(2)
n = dimType(10)
complexArrayType = (2 * c_double) * (n * m)
complexArray = complexArrayType()
status = yourLib.libcall(m,n,complexArray)
在庫邊(FORTRAN爲例):
subroutine libcall(m,n,complexArrayF) bind(c, name='libcall')
use iso_c_binding, only: c_double_complex,c_int
implicit none
integer(c_int) :: m, n
complex(c_double_complex), dimension(m,n) :: complexArrayF
integer :: ii, jj
do ii = 1,m
do jj = 1,n
complexArrayF(ii,jj) = (1.0, 0.0)
enddo
enddo
end subroutine
'ctypes'是使用C接口,但你的'類c_complex'聽起來像C++ - 所以這是值得懷疑的還有內置的東西。 – martineau