gpt4 book ai didi

c - 如何在 Julia 中使用/创建更通用的 ccall?

转载 作者:太空狗 更新时间:2023-10-29 16:11:20 25 4
gpt4 key购买 nike

我想调用一个调用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com