Использование DLL в ExcelVBA из C ++

0

Я импортирую функцию в Excel VBA из DLL. DLL была создана в Microsoft Visual C++ (с большей частью немодифицированной версией примера по умолчанию). Возвращаемое значение вызова функции в VB неверно, но я не знаю, почему.

Значение, которое я вижу, равно 0, но я ожидаю получить значение 42.

Я нашел почти идентичный вопрос здесь. Я пробовал их эксперимент, где я вызывал функцию из электронной таблицы. Я видел такое же поведение, верстка таблицы была правильной, а возврат в код vba не был.

Код C++ выглядит следующим образом:

addnum.h

#ifdef ADDNUM_EXPORTS
#define ADDNUM_API __declspec(dllexport)
#else
#define ADDNUM_API __declspec(dllimport)
#endif

extern "C" {
ADDNUM_API int  fnaddnum(void);
}

addnum.cpp

#include "stdafx.h"
#include "addnum.h
ADDNUM_API int fnaddnum(void)
{
    return 42;
}

Код VB выглядит так:

Declare Function fnaddnum _
   Lib " ... path to dll ... " _
   () As Integer


Sub use_dll()
   Dim return_val As Integer
   return_val = fnaddnum()
   MsgBox ("Value is" & Str(return_var))
End Sub
Теги:
excel-vba
dll
visual-studio-2010

1 ответ

0
Лучший ответ

Проблема в том, что у меня была опечатка. Я ссылался на "return_var" вместо "return_val". Действительно, ссылка на функцию dll возвращала значение правильно.

  • 3
    Option Explicit On

Ещё вопросы

Сообщество Overcoder
Наверх
Меню