Вызов функций из Rust DLL с помощью Excel VBA - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь создать 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 все работает!

1 Ответ

0 голосов
/ 19 декабря 2018

У меня был Rust, какой-то старый явно установленный Nightly в Настройках -> Приложения и функции (Windows 10), который как-то испортил мои настройки.После удаления Nightly все работает.

...