使用 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 后,一切正常。
我正在尝试创建一个 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 后,一切正常。