@vale88, il codice che hai postato risolve al 99% la questione:
void CMFCwithCSharpDlg::OnBnClickedBtnAdd()
{
CSharp::CSharpMath^ mathClass = gcnew CSharp::CSharpMath();
int result = mathClass->Add(2, 6);
char buf[200];
sprintf_s(buf, "result: %d", result);
MessageBoxA(GetSafeHwnd(), buf, "Message", MB_OK);
}
CSharp::CSharpMath^ mathClass = gcnew CSharp::CSharpMath();
Questa e' sintassi C++.NET NON C++ nativo
inoltre ti importi CSharpLib. DLL che e' Assembly C#.
Anche se ha estensione DLL, NON E' una libreria che puoi usare con il C++ nativo!
Tu avrai ANCHE creato un'applicazione APP MFC, ma in pratica strai sviluppando in C++.NET.
E si ritorna alla considerazione precedente, che una “soluzione” puo' contenere moduli scritti in linguaggi di programmazione diversi.
C++.NET e' una “”variante"" del C++ standard ISO, modificata da Microsoft per poter essere usata con il framework .NET.
Una delle caratteristiche e' che C++.NET SUPPORTA nativamente il Garbage Collector, cosa che il C++ non fa (a meno di non utilizzare una libreria esterna).
Quindi, fondamentalmente, ha fatto “un gran pasticcio” ;-)
(Ma quando fai il “gran pasticcio” a quanti strati lo fai???? ;-))
E' anche ragionevole: in entrambi i casi si usano le DLL, la sintassi e' simile.
Se uno non e' ‘avvezzo’ ai pasti vi che fa Microsoft, e' facile confondersi
Consiglio:
SE vuoi sviluppare in C++, SVILUPPA in C++ nativo, NON C++.NET.
SE vuoi sviluppare in .NET, USA C#, linguaggio di riferimento per questa piattaforma.
La CONSIDERAZIONE da tenere presente e': I DUE MONDI (mondo “nativo” e .NET) NON SI POSSONO PARLARE !
Per essere piu' precisi, si possono anche parlare MA bisogna applicare tecniche di programmazione DECISAMENTE complicate.
Lo si fa 1 volta su un milione.