He escrito un dll VC++. La declaración de uno de los métodos en la DLL es como sigue:¡Pila desbalanceada!
extern "C" _declspec(dllexport)
void startIt(int number)
{
capture = cvCaptureFromCAM(number);
}
Puedo utilizar este DLL en un código C# utilizando P/Invoke. Hago la declaración como:
[DllImport("Tracking.dll", EntryPoint = "startIt")]
public extern static void startIt(int number);
y llamo a la función en el código como:
startIt(0);
Ahora, cuando se encuentra esta línea, el compilador se lanzándome este error:
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.
No puedo entender por qué está lanzando este error ya que la firma en el código administrado y no administrado es la misma. Además, en mi otra máquina, el mismo código funciona perfectamente en Visual Studio. Entonces, esto me hace pensar que el error arrojado es erróneo.
Por favor ayuda.
Gracias
¿Alguna de sus máquinas es x86 y la otra es x64? –
No, ambos son x86. Solo uno ejecuta Win7 y otro XP – Jayesh