Witam. Mam problemik typu:
mam zewnętrzna dll (napisana w innym jezyku ) i w niej :
zmienna(bufor ) typu: CHAR fbuf[256] - bufor wymiany
oraz funkcje: WORD LibVer(LPSTR lpBuf,WORD BufSiz) - odczyt informacji o wersji biblioteki.
gdzie : WORD - dwa bajty bez znaku (0..65535)
LPSTR - wskaznik do bufora wymiany
Wywołanie powyższej funkcji powoduje ze zwraca ona wynik do bufora wymiany fbuf. W C# mam problem
gdyż w buforze nic sie nie zmienia po wywołaniu zewnętrznej funkcji. Nie wiem czy deklaracja funkcji jest nieprawidłowa czy coś jest z zewnętrzną zmienna... , w C# da się zdeklarować zewnętrzna zmienna?
kod C#:
[DllImport("C:\ctrl.dll")]
public static extern int LibVer(char[] lpBuf, int BufSiz);
string wynik = "";
IntPtr hdl = LoadLibrary("C:\\ctrl.dll");
if (hdl != IntPtr.Zero)
{
IntPtr addr = GetProcAddress(hdl, "fbuf");
if (addr != IntPtr.Zero)
{
Marshal.WriteInt64(addr,2);
(LibVer("2".ToCharArray(), 64);//funkcja powinna wrzucic do bufroa fbuf info o wersji dll
pole = (Marshal.ReadInt64(addr).ToString()); //odczyt z bufora , nie zmienia sie nic
}
}
Proszę o pomoc:/