使用Excel VBA从Rust DLL调用函数

索克利

我正在尝试创建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通过始终给出相同的错误来“帮助”我调试此问题:

Run-time error '48':

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

我显然已经检查了文件是否存在,并且可以通过DLL Export Viewer看到该功能。如果将文件替换为C库,则可以使函数正常工作。我也设法与Haskell一起使用,因此我知道Excel正在与外界交流,在给出错误消息时,它只是在说些更具体的事情。

我已经花了很多时间来尝试所有可能的组合。如果回答这个问题的人首先会仔细检查所提出的解决方案是否确实在他/她的机器上工作,我将不胜感激,因此我们不会以很长的乒乓球题和“否”的答案结束(已经在那里了) )。只是不可能在这里列出我已经尝试过的所有可能的变体。

编辑:我在设置->应用和功能中安装了Rust Nightly,这使我的设置有些混乱。每晚卸载后,一切正常!

索克利

我在(Windows 10的设置->应用程序和功能)中将Rust明确安装了Nightly Nightly,这使我的设置有些混乱。卸载Nightly之后,一切正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章