UnityC#にて重たい処理をDLLにやってもらおうと思い、
ViusalStudioを用いてC++のDLLをこちらを参考に作成しました。

メソッドを呼び出すことはできたので、
今度はクラス経由で呼び出してみようと思い
C++側のクラスの定義をMSDNのここを参考にクラスを作成したのですが
C#側からどのように呼び出せばいいのかがわかりません。


C#側

using UnityEngine;
using System.Collections;

// Must Need DLL Import 
using System.Runtime.InteropServices;

public class CallDlls : MonoBehaviour {

    // From c++ Dll (unmanaged)
    [DllImport("MathFuncsDll")]
    public static extern float TestMultiply(float a, float b);

    // From c++ Dll (unmanaged)
    [DllImport("MathFuncsDll")]
    public static extern float TestDivide(float a, float b);

    public float multiply(float a,float b)
    {
        return TestMultiply(a, b);
    }
}

C++DLL側

// MathFuncsDll.cpp

#include "stdafx.h"
#include "MathFuncsDll.h"
#include <stdexcept>

using namespace std;

extern "C" {
float TestMultiply(float a, float b)
{
    return a * b;
}

float TestDivide(float a, float b)
{
    if (b == 0) {
        return 0;
        //throw invalid_argument("b cannot be zero!");
    }

    return a / b;
    }
}

// MathFuncsDll.h

#ifdef MATHFUNCSDLL_EXPORTS
#define MATHFUNCSDLL_API __declspec(dllexport) 
#else
#define MATHFUNCSDLL_API __declspec(dllimport) 
#endif

extern "C" {
    class MATHFUNCSDLL_API TestClass {
        float TestMultiply(float a, float b);
        float TestDivide(float a, float b);
        //MATHFUNCSDLL_API float TestMultiply(float a, float b);
        //MATHFUNCSDLL_API float TestDivide(float a, float b);
    };
}