Salve a tutti.
Scusate per il titolo ma non c'era molto spazio...
In pratica dal visual basic richiamo uan funzione da una DLL scritta in C.
Li dentro scrivo dei dati dentro due vettori di interi passati per riferimento. Dato che sono due vettori non potevo fare un solo return e quindi ho optato per questa via.
Dichiarazione in visual basic
Dichiarazione in ccodice:Declare Sub Destinazioni_Possibili_Bianche Lib "Dama.dll" (ByVal X As Integer, ByVal Y As Integer, ByRef coordinate_x() As Integer, ByRef coordinate_y() As Integer)
Come avrete intuito serve per il gioco della dama.codice:__declspec (dllexport) void Destinazioni_Possibili_Bianche(int X, int Y, int *coordinate_x, int *coordinate_y)
nella DLL tutte le funzioni sono dentro a extern "C" se vi può servire saperlo.
Ho fatto una copia della DLL in versione "programma normale", per testare le funzioni e quella funzione mi pare che funzioni (scusate il gioco di parole).
Il problema è che quando richiamo al funzione dal visual basic
dal debug si vede che c'è un errore di tentativo di accedere ad una area di memoria protetta o qualcosa di simile.codice:Dim Possibili_X() As Integer Dim Possibili_Y() As Integer ReDim Possibili_X(4) ReDim Possibili_Y(4) Destinazioni_Possibili_Bianche(pedina_x, pedina_y, Possibili_X, Possibili_Y)
Ho provato a debuggare la DLL mettendo come eseguibile il .exe della dama ma da quell'errore quando viene richiamata la funzione, ancora prima di entrarci.
probabilmente il problema è semplice da risolvere.
forse la funzione non è abbastanza standard per poter usare __declspec(dllexport).
Spero che troviate presto una soluzione.
Grazie infinite in anticipo. Cordiali saluti

Rispondi quotando