ctypes.ArgumentError 不知道如何转换参数1

问题描述 投票:0回答:1

我收到此错误(适用于 fun(x) 定义中对 f 的调用中的 x):

ctypes.ArgumentError: argument 1: <class 'TypeError'>: Don't know how to convert parameter 1

运行此代码时:

import ctypes as ct
lib = ct.CDLL('x64\\Debug\\main2.dll')
f = getattr(lib,'MAIN2_MOD_mp_MAIN2')
f.restype = None
x = [2.0, 0.0]
def fun(x):
   objf = 0.0
   f(x,objf)
   return objf

非常感谢任何帮助。

更新: main2 是一个 Fortran 子例程:

module main2_mod
  contains
    !dec$ attributes dllexport :: main2
    subroutine main2(x,f)
    implicit none
    real(8), intent(in ) :: x(*)
    real(8), intent(out) :: f
python fortran
1个回答
0
投票

Michael Butscher 在评论中的解决方案:

更换

objf = 0.0

objf = ct.c_double(0.0)

f(x,objf)

f((ct.c_double * len(x))(*x), ct.byref(objf))
© www.soinside.com 2019 - 2024. All rights reserved.