小编Swy*_*ter的帖子

使用 LuaJIT 调用标准打开对话框会导致访问冲突

使用 LuaJIT 的 FFI遵循MSDN 的 GetOpenFileName 示例。我已经尝试让它工作两天了,不仅对话框没有打开,而且整个事情都崩溃了。

当使用 OllyDdb 进行调试时,它会在comdlg32.dll中的某处引发丑陋的访问冲突。

这是仅包含基本代码的概念证明。如果我指定结构大小为零,它会毫无问题地退出,GetLastError()会抛出87 (ERROR_INVALID_PARAMETER)

所以我认为问题与 struct 或 FFI 有关。

如果有人能够在这里阐明一些...谢谢。

ffi = require"ffi"
bit = require"bit"

collectgarbage("stop")

ffi.cdef[[
  static const int OFN_FILEMUSTEXIST             = 0x1000;
  static const int OFN_NOCHANGEDIR               = 8;
  static const int OFN_PATHMUSTEXIST             = 0x800;

  typedef bool BOOL;
  typedef char CHAR;

  typedef unsigned short WORD; 
  typedef unsigned long DWORD;

  typedef void *PVOID;
  typedef void *LPVOID;
  typedef void *LPOFNHOOKPROC;

  typedef unsigned long HANDLE;
  typedef HANDLE HWND; …
Run Code Online (Sandbox Code Playgroud)

c winapi lua ffi luajit

1
推荐指数
1
解决办法
814
查看次数

标签 统计

c ×1

ffi ×1

lua ×1

luajit ×1

winapi ×1