使用LuaJIT调用标准打开对话框会产生访问冲突。

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

在使用 OllyDdb 进行调试时,它在 comdlg32.dll 中抛出了一个讨厌的访问冲突。

这是一个证明性概念,只包括基本代码。如果我指定结构大小为零,它会退出而不会出现问题,GetLastError() 抛出一个 87 (ERROR_INVALID_PARAMETER)

因此,我认为问题是与结构或 FFI 相关的。

如果有人能在这里提供一些帮助,那太好了。

点赞
用户1583076
用户1583076

这些 C 函数需要一个指向结构体的指针作为参数。正确的声明格式应该是:GetOpenFilenameA(OPENFILENAME *lpofn) 等等。

2012-08-07 21:06:44