(потерять класс и пространство имен).

аюсь использовать возможности Excel VBA для доступа и использования функций из файлов DLL.

пример:

Private Declare Function funcName Lib _
"<filePath\File.dll>" _
(ByRef a As Double, ByRef b As Double) As Double

Следуя инструкциям отУчебник Миркософт о том, как создать файл DLL, приводит к 3 предупреждениям (C4273), когда я пытаюсь построить проект, для 3 объявленных функций:

'MathLibrary::Functions::Add': inconsistent dll linkage,
'MathLibrary::Functions::Multiply': inconsistent dll linkage,
'MathLibrary::Functions::AddMultiply': inconsistent dll linkage

Когда VBA в Excel пытается получить доступ к созданному файлу .dll из этого учебника, он выдает ошибку времени выполнения (453): 'Не удается найти точку входа DLL Добавить в "путь \ file.dll".

Я новичок, когда дело доходит до языка C \ C ++. Я провел более 6 часов:

пытаясь сделать твик в учебнике ванилиначать сначалапоиск помощи и аналогичные вопросывносить изменения в заявления в рамках VBA

И все же я чувствую себя дальше от решения.

Я использую 32-битный Excel в 64-битной Windows.

Любая помощь приветствуется :)

редактировать

Файлы кодов (по запросу):

MathLibrary.cpp

// MathLibrary.cpp : Defines the exported functions for the DLL application.
// Compile by using: cl /EHsc /DMATHLIBRARY_EXPORTS /LD MathLibrary.cpp  

#include "stdafx.h"  
#include "MathLibrary.h"  

namespace MathLibrary
{
    double Functions::Add(double a, double b)
    {
        return a + b;
    }

    double Functions::Multiply(double a, double b)
    {
        return a * b;
    }

    double Functions::AddMultiply(double a, double b)
    {
        return a + (a * b);
    }
}

MathLibrary.h

// MathLibrary.h - Contains declaration of Function class  
#pragma once  

#ifdef MATHLIBRARY_EXPORTS  
#define MATHLIBRARY_API __declspec(dllexport)   
#else  
#define MATHLIBRARY_API __declspec(dllimport)   
#endif  

namespace MathLibrary
{
    // This class is exported from the MathLibrary.dll  
    class Functions
    {
    public:
        // Returns a + b  
        static MATHLIBRARY_API double Add(double a, double b);

        // Returns a * b  
        static MATHLIBRARY_API double Multiply(double a, double b);

        // Returns a + (a * b)  
        static MATHLIBRARY_API double AddMultiply(double a, double b);
    };
}

stdafx.h

// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//

#pragma once

#include "targetver.h"

#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers
// Windows Header Files:
#include <windows.h>

// TODO: reference additional headers your program requires here

targetver.h

#pragma once

// Including SDKDDKVer.h defines the highest available Windows platform.

// If you wish to build your application for a previous Windows platform,
//     include WinSDKVer.h and
// set the _WIN32_WINNT macro to the platform you wish to support 
//     before including SDKDDKVer.h.

#include <SDKDDKVer.h>

Модуль VBA

Private Declare Function Add Lib _
"c:\<Path>\MathLibrary.dll" _
(ByRef a As Double, ByRef b As Double) As Double

Sub useAddXL()
    MsgBox Add(1, 2)
End Sub

Ответы на вопрос(1)

Ваш ответ на вопрос