Как создать dll на C ++ для использования в C #

Я хочу задать вам небольшой вопрос.

У меня есть один исходный код 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));
}
10
задан bakar 3 December 2011 в 13:59
поделиться