Salve a tutti, ho un programma scritto in C. L'interfaccia di questo programma dovrà essere fatta in C#.
Per questo devo fare un dll del programma in C che verrà utilizzata dll'interfaccia scritta in C#.
I tipi del programma scritto in C sono char**, perchè il tipo string in C non esiste, e quindi durante l'importazione della dll in C# diventano **sbyte i quali sono intrattabili. Per questo ho scritto un'altra dll wrapper per quella fatta in C che trasforma il tipo charr** in string. Ma c'è un problema, il programma principale in C# chiama la dll wrapper (fin qui tutto bene) la quale chiama la dll C ma non funziona perchè non trova il punto di ingresso (l'entry point) della dll scritta in C.
Dopo varie ricerche ho visto che per far funzionare una dll scritta in C con C# bisogna fare un assembly gestito, cioè una libreria di tipo clr.

Di seguito riporto il codice delle due dll.

DLL SCRITTA IN C:

.CPP

#include "stdafx.h"
#include "GestioneVIdeoCLR.h"

namespace GestioneVIdeoCLR
{
extern "C" double MyMathFuncs::Add(double a, double b)
{
return a + b;
}
}

.H

#pragma once

using namespace System;

namespace GestioneVIdeoCLR {

public ref class MyMathFuncs{
public:
static double Add(double a, double b);
};
}


DLL WRAPPER SCRITTA PER C#:

.CS

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.InteropServices;
using GestioneVIdeoCLR;

namespace DLLWrapper
{
public class Wrapper
{
[DllImport("GestioneVIdeoCLR.dll")]
public static extern double Add(double a, double b);
}
}

naturalmente il mio programma non è una somma, ma ho provato con questa per vedere se funziona. Se non funziona con una normale somma, figuriamoci con il programma vero che è più complesso. Utilizzo visual studio 2008.
Qualche suggerimento??? :master:
Grazie