Odczyt bajtów z funkcji zwracającej TBytes

Odczyt bajtów z funkcji zwracającej TBytes
MR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

Mam funkcje w dll pisane Delphi i ona zwraca typ TBytes (dane zakodowane poprzez MessagePack)

I teraz w żaden sposób nie mogę tych danych odczytać.
I nawet nie chodzi o ich odkodowanie.
Ja nie mogę ich zwrócić z tej funkcji.

Kopiuj
private const string ApiDllName = "Dll_GetTableFields.dll";



 [DllImport(ApiDllName)]
  public static extern byte[] GetTableFieldsMessagePack(parametry_funkcji);
Kopiuj
 byte[] bytes = GetTableFieldsMessagePack(parametry);

do innych funkcji w tej dll wchodzi a do tej mojej nie wchodzi.
Od razu zwraca błąd 

Kopiuj
Cannot marshal 'return value': Invalid managed/unmanaged type combination.

Macie jakieś pomysły jak zwrócić tablicę bajtów

ZD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2310
0

@My Razem:

To nie to, ze "nie można odczytać", tylko masz bład kompilacji.

Chcesz pomocy, daj szerszy kod.

MR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

ale co ja mam więcej podać. Cała magia dzieje się po stronie dll
Ja tylko ją wywołuję i chcę pobrać to co ona zwraca...

Źle ją wywołuję? Inne funkcje działają. Tutaj jest problem z tym zwracanym typem.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

i oczywiście szukałeś i oczywiście nigdzie nie było...
https://www.google.com/search?q=delphi+dll+return+array

MR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 119
0

Owszem, już dwa dni przeszukuję różne strony.
I jakbym znalazł coś co działa, to bym tu nie pisał.

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

no przecież masz odpowiedź (a właściwie to przykład jak należy zwracać tablicę z dll) w pierwszym linku z googla 🤦 - w wielkim skrócie - po twojemu się nie da - trzeba zrobić po bożemu

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.