Я пытаюсь вызвать метод со следующим объявлением:
extern "C" __declspec(dllimport) int __stdcall CalcDDtable(struct ddTableDeal tableDeal, struct ddTableResults * tablep);
Структуры определены следующим образом:
struct ddTableDeal {
unsigned int cards[4][4];
};
struct ddTableResults {
int resTable[5][4];
};
Я пытаюсь вызвать его таким образом:
<DllImport("dds.dll", CallingConvention:=CallingConvention.StdCall)>
Public Shared Function CalcDDtable(ByVal deal As TableDeal, ByRef results As TableResults) As Integer
End Function
Public Function CalculateDeal() As Integer
Dim tableDeal As TableDeal
Dim tableResults As TableResults
Dim cards(3, 3) As Integer
cards(0, 0) = 32764
cards(1, 1) = 32764
cards(2, 2) = 32764
cards(3, 3) = 32764
tableDeal.Cards = cards
Dim results(4, 3) As Integer
tableResults=new TableResults
tableResults.Results = results
Dim errorCode = CalcDDtable(tableDeal, tableResults)
Return errorCode
End Function
End Class
Public Structure TableDeal
Dim Cards(,) As Integer
End Structure
Public Structure TableResults
Dim Results(,) As Integer
End Structure
Структуры должны быть двумерными массивами с индексами 4,4 и 5,4 соответственно.Второй - это выходной параметр.
Куда я иду не так?
Для тех, кто хочет знать: это решатель с двойным манекеном .dll , написанный БоHaglund