我想调用一个调用 c 函数的函数,但我希望能够换出实际的 C 函数
function Ccall(fn)
... more code 1 ...
ccall((fn, libc), Int32, ())
... more code 2 ...
end
more code
部分始终相同,但 fn
可以更改。
举个简单的例子,我尝试调用这个Ccall函数
f = "clock" |> Symbol
Ccall(f)
但我收到一条错误消息。也试过
function Ccall(fn)
... more code 1 ...
ccall(fn, Int32, ())
... more code 2 ...
end
与
const f = ("clock" |> Symbol, "libc")
Ccall(f)
但运气不好,f
不是常量表达式,它应该是什么,只是因为我在前面放了一个const
。
是否有一种具有上述通用性的 ccall-ing 方法?如果是这样,如何?
最佳答案
ccall
需要一个表达式,而不是一个值——在这方面它有点像宏。您可以生成适当的表达式(请参阅 HDF5.jl 包中的一个示例),但最好的办法可能是按照 Gnimuc Key 的建议为每个 C 函数创建一个包装函数。
关于c - 如何在 Julia 中使用/创建更通用的 ccall?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32879033/