使用 Excel VBA 从 Rust DLL 调用函数

Calling functions from Rust DLL with Excel VBA

我正在尝试创建一个 Rust DLL 并从 64 位 Excel(Windows 10 和 Office 365)调用这些函数。

目前我的 lib.rs 看起来像这样:

#[no_mangle]
pub extern "stdcall" fn square(x: f64) -> f64 {
    {x * x}
}

我正在使用命令进行编译:

rustc --crate-type=cdylib lib.rs

我的 VBA 代码如下所示:

Private Declare PtrSafe Function square Lib "C:\Users\user\rust\excelfunctions\src\lib.dll" (ByVal x As Double) As Double

Sub testsquare()
    MsgBox square(10)
End Sub

Excel 是 "helping" 我通过总是给出相同的错误来调试它:

Run-time error '48':

File not found. C:\Users\user\rust\excelfunctions\src\lib.dll

我显然已经检查过文件在那里,我可以使用 DLL Export Viewer 查看函数。如果我用 C 库替换文件,我可以使函数工作。我也设法用 Haskell 完成了这项工作,所以我知道 Excel 正在与外界对话,只是在给出错误消息时没有说任何更具体的内容。

我为此花了很多时间并尝试了所有可能的组合。如果回答这个问题的人首先仔细检查所提出的解决方案是否真的在 his/her 机器上工作,我将不胜感激,这样我们就不会得到一个很长的乒乓球问题和 "no" 答案(已经在那里)。只是不可能在这里列出我已经尝试过的所有可能的变体。

编辑:我在设置 -> 应用程序和功能中安装了 Rust Nightly,这不知何故弄乱了我的设置。卸载 Nightly 后,一切正常!

我在设置 -> 应用程序和功能(Windows 10)中明确安装了一些旧的 Rust Nightly,这不知何故弄乱了我的设置。卸载 Nightly 后,一切正常。