Utilizzare una classe c++ nativa in windows form

mercoledì 24 maggio 2006 - 01.30

mrb Profilo | Newbie

Ciao a tutti, ho un problema che riguarda l'utilizzo di codice unmanaged(nativo) e quello managed(.NET). Utilizzo il visual c++ 2005.
In particoalre il vorrei crearmi una dll contenente una classe c++ nativa, es:
//SumDLL.h
class __declspec(dllexport) SumDLL{
public:
int Somma(int a,int b);

};
//SumDLL.cpp
#include "SumDLL.h"
int SumDLL::Somma(int a,int b){
return(a+b);
}
e poterla utilizzare in una applicazione managed. Come posso fare? Cercando ho trovato questo metodo:
//CallDll.cpp
class __declspec(dllimport) SumDLL{
public:
int Somma(int a,int b);
};
Ma quando cerco di utilizzare la classe (SumDLL s, somma=s.Somma(3,2)) ottengo degli errori.
Qualcuno mi può aiutare.. Grazie infinite.

Cteniza Profilo | Guru

Se si tratta di una dll scritta per il framework con c++.net per usare le sue classi e metodi devi solamente referenziarla all'interno del tuo progetto.

mrb Profilo | Newbie

Innanzitutto grazie per la risposta. Ho provato a mettere nella stessa soluzione sia il progetto chiamante che quello della dll win32. Ho provato poi a referenziare la libreria nel progetto chiamante ma ottengo ancora degli errori.
Se io creo una libreria di funzioni e poi le importo utilizzando:
using namespace System::Runtime::InteropServices;
[DllImport("SumDLL.dll")]
export "C" int Somma(int a,int b);

riesco ad utilizzare la funzione nell'aplicazione managed soltanto copiando il file SumDLL.dll nella cartella dove è presente l'eseguibile del chiamante. Quello che vorrei fare io è creare una classe dll unmanaged e richiamarla nell'applicazione managed. Questo secondo modo non mi riesce. Altre drittei? Grazie mille.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5