Lua和Alien结构体

我正在尝试使用 alien 0.50 模块将这个 C 结构重新定义为 Lua,但是其中有两个 char 数组在结构体末尾。szLibraryPathszLibraryName 在 C 中都是这样定义的:char szLibraryPath[MAX_PATH]。使用 alien 能实现吗?

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
}

原文链接 https://stackoverflow.com/questions/1965824

点赞
stackoverflow用户189205
stackoverflow用户189205

看看 Alien 的作者在这个答案中的写法:

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 添加到所有的偏移量中。

2009-12-27 12:41:15