从 Julia 调用 Win32 函数
Calling Win32 Functions From Julia
我想使用 ccall 从 julia 调用 File I/O 函数(即 CreateFile、WriteFile 等)。
我是否必须在 ccall 中将库名称指定为参数才能从 win32 api 调用任何函数?如果是,如何确定对应dll的名称?
是的,您确实需要提供图书馆名称。 ccall
的第一个参数是 (:function, "library")
形式的元组。所以,如果你调用 GetTickCount
它将是 (:GetTickCount, "kernel32")
.
您还需要指定调用约定、return值类型和参数类型。在 GetTickCount
的情况下,它将是:
tickCount = ccall( (:GetTickCount, "kernel32"), stdcall, UInt32, () )
要找出调用约定、return 值类型和参数类型,请在 MSDN 上查找函数。例如,GetTickCount
在这里:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408.aspx。请注意,在页面的最底部是一个 table,其中包含导出函数的库的名称。在这种情况下,kernel32
.
此处详细介绍了所有内容:http://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/
我想使用 ccall 从 julia 调用 File I/O 函数(即 CreateFile、WriteFile 等)。
我是否必须在 ccall 中将库名称指定为参数才能从 win32 api 调用任何函数?如果是,如何确定对应dll的名称?
是的,您确实需要提供图书馆名称。 ccall
的第一个参数是 (:function, "library")
形式的元组。所以,如果你调用 GetTickCount
它将是 (:GetTickCount, "kernel32")
.
您还需要指定调用约定、return值类型和参数类型。在 GetTickCount
的情况下,它将是:
tickCount = ccall( (:GetTickCount, "kernel32"), stdcall, UInt32, () )
要找出调用约定、return 值类型和参数类型,请在 MSDN 上查找函数。例如,GetTickCount
在这里:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408.aspx。请注意,在页面的最底部是一个 table,其中包含导出函数的库的名称。在这种情况下,kernel32
.
此处详细介绍了所有内容:http://docs.julialang.org/en/v1/manual/calling-c-and-fortran-code/