Я хочу задать вам небольшой вопрос.
У меня есть один исходный код C ++ и один заголовочный файл. Файл C ++ использует библиотеку windows.h, выполняет операции с использованием последовательного порта (основные операции: read (), write () и т. Д.).
Я хочу создать библиотеку с использованием этих файлов и использовать эту библиотеку в моем решении C # .Net .
Какой тип библиотеки мне нужно создать? Как я могу это сделать? После создания библиотеки, как я могу импортировать ее в решение C #?
С наилучшими пожеланиями.
Части кода, которые я использую:
// MathFuncsDll.h
namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static __declspec(dllexport) double Add(double a, double b);
// Returns a - b
static __declspec(dllexport) double Subtract(double a, double b);
// Returns a * b
static __declspec(dllexport) double Multiply(double a, double b);
// Returns a / b
// Throws DivideByZeroException if b is 0
static __declspec(dllexport) double Divide(double a, double b);
};
}
// MathFuncsDll.cpp
// compile with: /EHsc /LD
#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 new invalid_argument("b cannot be zero!");
}
return a / b;
}
}
Импортируемая часть C #:
[DllImport("SimpleDll.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern double Add(double a, double b);
static void Main(string[] args)
{
string a = Add(1.0, 3.0));
}