Cześć, zapewne robię coś źle, ale nie wiem, co.
Mam funkcję w dll napisaną w c++:
__declspec(dllexport) void __stdcall _func1(double *p1, double *p2)
Wywołanie w C#:
[DllImport(@"lib.dll", EntryPoint = "__func1@20", CallingConvention = CallingConvention.StdCall)]
public static extern void func1(ref double param1, ref double param2);
//a potem:
double param2 = 0; //wartość jest nieważna
func1(ref param1, ref param2); //param1 pochodzi z parametru, param2 jak widać jest zmienną lokalną
Problem jest taki, że param2 jakby nie jest przekazywane. Tzn. jeśli zrobię w c++:
cout << p2;
to wyświetli mi "00000000". Skoro parametr jest zadeklarowany i nawet zdefiniowany w C#, to czemu go nie ma w C++? Parametr 1 jest całkowicie ok.