Bonjour,
je n'arrive pas à faire un appel à une fonction avec une dll en c++ voici la source (récupérer depuis le site microsoft)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
// MathFuncsDll.h
#ifdef MATHFUNCSDLL_EXPORTS
#define MATHFUNCSDLL_API __declspec(dllexport)
#else
#define MATHFUNCSDLL_API __declspec(dllimport)
#endif
namespace MathFuncs
{
// This class is exported from the MathFuncsDll.dll
class MyMathFuncs
{
public:
// Returns a + b
static MATHFUNCSDLL_API double Add(double a, double b);
// Returns a - b
static MATHFUNCSDLL_API double Subtract(double a, double b);
// Returns a * b
static MATHFUNCSDLL_API double Multiply(double a, double b);
// Returns a / b
// Throws const std::invalid_argument& if b is 0
static MATHFUNCSDLL_API double Divide(double a, double b);
};
} |
puis
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
// MathFuncsDll.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "MathFuncsDll.h"
#include <stdexcept>
using namespace std;
namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}
double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}
double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw invalid_argument("b cannot be zero!");
}
return a / b;
}
} |
l'appel se fait comme ceci en c++
MathFuncs::MyMathFuncs::Add(a, b)
en windev j'essaye
1 2 3 4 5 6 7
|
toto1 est un réel sur 8 octets
toto2 est un réel sur 8 octets
ChargeDLL("xxx.dll")
nAdresseChaîne est un entier = API("xxx.dll","MathFuncs::MyMathFuncs::Add",toto1,toto2)
ou
nAdresseChaîne est un entier = API("xxx.dll","MathFuncs.MyMathFuncs.Add",toto1,toto2) |
rien a faire , quelqu'un à une idée ?
Partager