Excel VBA, не могу найти точку входа DLL из файла DLLC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Excel VBA, не могу найти точку входа DLL из файла DLL

Сообщение Anonymous »

Я пытаюсь использовать возможность Excel VBA доступа и использовать функции из файлов DLL. < /p>

Пример: < /p>

Private Declare Function funcName Lib _
"" _
(ByRef a As Double, ByRef b As Double) As Double
< /code>



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

'MathLibrary::Functions::Add': inconsistent dll linkage,
'MathLibrary::Functions::Multiply': inconsistent dll linkage,
'MathLibrary::Functions::AddMultiply': inconsistent dll linkage
< /code>

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


Пытаясь внести изменения в учебник Vanilla < /li>
Начиная с < /li>
Googtling для помощи и аналогичные проблемы < /li>
Внесение изменений в заявления в рамках VBA < /li>
< /ul>

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



Любая помощь будет очень оценена :) < /p>



edit < /strong> < /p>

кодовые файлы (как запрошено): < /p>

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);
}
}
< /code>

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);
};
}
< /code>

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

// TODO: reference additional headers your program requires here
< /code>

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
< /code>

vba module < /p>

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

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


Подробнее здесь: https://stackoverflow.com/questions/441 ... a-dll-file
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»