Я пытаюсь создать 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 в «Настройки» -> «Приложения и функции», которая как-то испортила мои настройки.После удаления Nightly все работает!