我正在尝试使用 ccall 与 Windows 函数(具体来说是 FindWindowA)进行交互,但我遇到了一个奇怪的行为
julia> ccall((:FindWindowA, :user32), Int32, (Ptr{Cvoid},), C_NULL)
855386
julia> foo() = ccall((:FindWindowA, :user32), Int32, (Ptr{Cvoid},), C_NULL)
foo (generic function with 1 method)
julia> foo()
0
julia> @ccall :user32.FindWindowA(C_NULL::Ptr{Cvoid})::Int32
65920
julia> foo() = @ccall :user32.FindWindowA(C_NULL::Ptr{Cvoid})::Int32
foo (generic function with 1 method)
julia> foo()
0
有没有办法从 ccall 获得一致的结果?
最佳答案
根据 docs,也尝试为函数提供第二个参数:
julia> @ccall :user32.FindWindowA(C_NULL::Ptr{Cvoid})::Int32
65896
julia> boo() = @ccall :user32.FindWindowA(C_NULL::Ptr{Cvoid}, C_NULL::Ptr{Cvoid})::Int32
boo (generic function with 1 method)
julia> boo()
65896
关于c - Julia ccall 的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65502320/