我正在尝试用外星人0.50模块将这个C结构重新定义为Lua但是我最后有两个char数组。 szLibraryPath
和szLibraryName
最初都定义为
C. char szLibraryPath[MAX_PATH]
可以用外星人来完成吗?
LIBRARY_ITEM_DATA = alien.defstruct{
{ "hFile", "long" },
{ "BaseOfDll", "long" },
{ "hFileMapping", "long" },
{ "hFileMappingView", "long" },
{ "szLibraryPath", "byte" }, -- fix to MAX_PATH
{ "szLibraryName", "byte" } -- fix to MAX_PATH
}
答案 0 :(得分:2)
请看Alien的作者this answer。
您的结构应如下所示:
LIBRARY_ITEM_DATA = alien.defstruct{
{ "hFile", "long" },
{ "BaseOfDll", "long" },
{ "hFileMapping", "long" },
{ "hFileMappingView", "long" },
{ "additionalFields", "char" }
}
LIBRARY_ITEM_DATA.size = LIBRARY_ITEM_DATA.size + 2*MAX_PATH - 1
您可以通过在结构的末尾手动读取/写入字节来获取/设置数组(使用链接中的代码)。要访问第二个数组,请将MAX_PATH添加到所有偏移量。