Witam,
Mam problem taki : chcę korzystać z funkcji zawartych w DLL napisanych w .NET w VC++. Z którego to potem kodu chcę zrobić DLL. Znalazłem co nieco na ten temat, ale mam wątpliwości i pytania:
Zaznaczę, że nie potrzebuję dostępu do środa klas, czyli nie chcę pisać wrapperów.
Znalazłem taki przykład :
#using <mscorlib.dll>
#using <System.dll>
#include <vcclr.h>
#include <stdio.h>
#include <tchar.h>
using namespace System;
using namespace System::Reflection;
void main ()
{
try {
// Load library dynamically:
Assembly* a = Assembly::Load("MyLib");
if (a) {
Console::WriteLine("Assembly = {0}", a);
Type* t = a->GetType("MyLib.MyClass");
if (t) {
Console::WriteLine("Type = {0}", t);
MethodInfo* m = t->GetMethod("SayHello");
if (m) {
Console::WriteLine("Method = {0}\n", m);
String* args[] = {"Test2"};
m->Invoke(NULL, args);
} else {
printf("Can't find SayHello!\n");
}
} else {
printf("Can't find MyLib.MyClass!\n");
}
} else {
printf("Can't load MyLib!\n");
}
} catch (Exception* e) {
Console::WriteLine("*** Oops: Exception occurred: {0}", e);
}
}
Przypuśćmy, że mam dwie DLLki w .NET:
Assembly* a = Assembly::Load("DL1");
Assembly* b = Assembly::Load("DL2");
Ok, teraz chciałbym napisać coś takiego
//kod napisany w Matlabie (wcześniej jest NET.addAssembly('sciezki do DLL'))
//Meth - method
wfs = DL1.Meth1(true);
res = CL1.CL2.Meth2(wfs, 'sample.ssc'); //ta metoda siedzi w drugiej DLL - DL2
//Data and Img - parameters
res.Data = wfs.Img;
Więc zacząłem od włączenia /clr. Napisałem trochę kodu, ale gubię się strasznie jak mam metodę tak zagnieżdżoną jak w linicje z "res". Zapewne to są obiekty jakieś a w nich dopiero metoda. Jak to ugryźć ?
dzięki z góry : )
D.