У меня есть DLL, которая содержит неуправляемые классы с методами.Я пытаюсь вызвать эти методы из C ++ / CLI.
Мое чтение привело меня к выводу, что для этого используется P / Invoke.Однако я не могу понять, как заставить его работать.
В DLL определен следующий класс:
//Header:
namespace MathFuncs
{
class MyMathFuncs
{
public:
static __declspec(dllexport) double Add(double a, double b);
static __declspec(dllexport) double Subtract(double a, double b);
static __declspec(dllexport) double Multiply(double a, double b);
static __declspec(dllexport) double Divide(double a, double b);
};
}
//Source:
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 new invalid_argument("b cannot be zero!");
}
return a / b;
}
}
Из того, что я прочитал, следующеедолжен объявить метод в моем коде C ++ / CLI, который я затем могу вызвать в своем коде:
class MyMathFuncs {
public:
[DllImport("TestDLL.dll")]
static double Add(double a, double b);
};
Где "TestDLL.dll" - моя DLL.
Я получаю ошибкуво время выполнения.Он говорит: «Невозможно найти точку входа с именем« Добавить »в DLL« TestDLL.dll »».
Что я делаю не так?Я прочитал статьи MSDN по этому вопросу, но я не понимаю этого.
Заранее спасибо за помощь!