3

我正在尝试使用外星人 0.50 模块将此 C 结构重新定义为 Lua,但是最后我有两个 char 数组。两者szLibraryPathszLibraryName最初在 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
}
4

1 回答 1

2

看看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-27T12:41:15.847 回答