Ho scritto una DLL VC++. La dichiarazione di uno dei metodi nel dll è la seguente:Stack sbilanciato!
extern "C" _declspec(dllexport)
void startIt(int number)
{
capture = cvCaptureFromCAM(number);
}
Io uso questa DLL in un codice C# utilizzando P/Invoke. Faccio la dichiarazione come:
[DllImport("Tracking.dll", EntryPoint = "startIt")]
public extern static void startIt(int number);
e chiamo la funzione nel codice come:
startIt(0);
Ora, quando si incontra questa linea, il compilatore mi gettando questo errore:
A call to PInvoke function 'UsingTracking!UsingTracking.Form1::startIt' has
unbalanced the stack. This is likely because the managed PInvoke signature does
not match the unmanaged target signature. Check that the calling convention
and parameters of the PInvoke signature match the target unmanaged signature.
Non riesco a capire perché genera questo errore poiché la firma nel codice gestito e non gestito è la stessa. Inoltre, nella mia altra macchina, lo stesso codice funziona perfettamente nello studio visivo. Quindi, questo mi fa pensare che l'errore che si genera sia sbagliato.
Per favore aiuto.
Grazie
Una delle macchine x86 e l'altra x64? –
No, entrambi sono x86. Solo quello esegue Win7 e altri XP – Jayesh