我试图用外星人0.50模块将这个C结构重新定义为Lua,但是在最后我有两个char数组。szLibraryPath和szLibraryName最初都定义为
char szLibraryPath[MAX_PATH]在C中可以做到这一点的外星人?
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
}发布于 2009-12-27 20:41:16
看看“异形”作者的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添加到所有偏移量。
https://stackoverflow.com/questions/1965824
复制相似问题