从Julia调用Win32函数

时间:2015-05-31 09:43:05

标签: winapi julia

我想使用ccall从julia调用File I / O函数(即CreateFile,WriteFile等)。

我是否必须在ccall中指定库名作为参数来调用win32 api中的任何函数?如果是,我该如何确定相应dll的名称?

1 个答案:

答案 0 :(得分:4)

是的,您需要提供库名称。 ccall的第一个参数是(:function, "library")形式的元组。因此,如果您致电GetTickCount,则会(:GetTickCount, "kernel32")

您还需要指定调用约定,返回值类型和参数类型。在GetTickCount的情况下,它将是:

tickCount = ccall( (:GetTickCount, "kernel32"), stdcall, UInt32, () )

要找出调用约定,返回值类型和参数类型,请在MSDN上查找该函数。例如,GetTickCount就在这里:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724408.aspx。请注意,页面的最底部是一个表,其中包含导出该函数的库的名称。在这种情况下,kernel32

这里详细介绍了所有内容:http://julia.readthedocs.org/en/latest/manual/calling-c-and-fortran-code/