Я не могу заставить свою C# Dll работать с моей электронной таблицей Excel Macro для вызова функции в библиотеке Dll. Я могу вызвать функцию, если у нее нет параметров, способных вернуть ожидаемое значение. Но я не могу добиться успеха вызова Dll из VBA, когда добавляю входные параметры в функцию.
Общая сумма моего модуля С# выглядит следующим образом:
using System;
using System.Runtime.InteropServices;
using RGiesecke.DllExport;
namespace RSExternalInterface
{
public class RSExternalInterface
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)]
public static int TestExport(int left, int right)
{
return left + right;
}
}
}
Мой код VBA выглядит следующим образом.
Декларация модуля:
Declare Function add Lib "C:\Program Files\RS\RSExternalInterface.dll" (ByVal Left As Integer, ByVal Right as Integer) As Integer
Вызов приведенной выше функции внутри подпрограммы события нажатия кнопки выглядит следующим образом:
result = add (5, 7)
В момент выполнения вышеуказанной строки возникает ошибка 49.
Я пробовал следующее:
- Удален «ByVal» в объявлении функции VBA.
- Убрано и добавлено оформление в функции C#, после [DllExports ...]
- Убежден, что я ориентируюсь на правильную платформу ЦП
- Удалены параметры в объявлении и вызове, чтобы убедиться, что функция DLL доступна.
Что я делаю неправильно?
Lib
послеadd
- person K.Dᴀᴠɪs   schedule 25.01.2018As Integer
из своих объявлений? Просто из любопытства. - person K.Dᴀᴠɪs   schedule 26.01.2018