【问题标题】:Lua and Alien structuresLua 和 Alien 结构
【发布时间】:2014-03-07 06:01:00
【问题描述】:

我正在尝试使用外星人 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
}

【问题讨论】:

    标签: lua lua-alien


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-04
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 2013-09-08
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多