he siguiente código, una vez que corro mi solicitud me sale este errorerror de la función que llama, [Una llamada a la función PInvoke desequilibró la pila]
Alguien sabe cómo puedo solucionar este error?
ERROR:
Una llamada a la función PInvoke 'testcamera EDSDKLib.EDSDK :: EdsDownloadEvfImage!' Ha desequilibrado la pila. Esto es probable porque la firma de PInvoke administrada no coincide con la firma de destino no administrada. Compruebe que la convención y los parámetros de la firma PInvoke llamadas coinciden con el objetivo de la firma no administrado
IntPtr cameraDev;
bool LVrunning = false;
uint err = EDSDK.EDS_ERR_OK;
uint device = 0;
IntPtr MemStreamRef = new IntPtr(0);
IntPtr EvfImageRef = new IntPtr(0);
PictureBox pbLV;
public LiveView(IntPtr c, PictureBox p)
{
cameraDev = c;
pbLV = p;
}
internal void StartLiveView()
{
//LVrunning = true;
//int i = 0;
// Get the output device for the live view image
err = EDSDK.EdsGetPropertyData(cameraDev, EDSDK.PropID_Evf_OutputDevice, 0, out device);
Debug.WriteLineIf(err != EDSDK.EDS_ERR_OK, String.Format("Get Property Data failed: {0:X}", err));
Debug.WriteLineIf(err == EDSDK.EDS_ERR_OK, String.Format("Liveview output is: {0:x}", device));
Thread.Sleep(1000);
// Set the computer as live view destination
if (err == EDSDK.EDS_ERR_OK)
{
err = EDSDK.EdsSetPropertyData(cameraDev, EDSDK.PropID_Evf_OutputDevice, 0,
Marshal.SizeOf(EDSDK.EvfOutputDevice_PC), EDSDK.EvfOutputDevice_PC);
Debug.WriteLine(String.Format("Liveview output to computer: {0:X}", err));
}
// Create a memory stream for the picture
if (err == EDSDK.EDS_ERR_OK)
{
err = EDSDK.EdsCreateMemoryStream(0, out MemStreamRef);
Debug.WriteLine(String.Format("Create Memory Stream: {0:X}", err));
}
// Get a reference to a EvfImage
if (err == EDSDK.EDS_ERR_OK)
{
**//i get error here**
**err = EDSDK.EdsCreateEvfImageRef(MemStreamRef, out EvfImageRef);**
Debug.WriteLine(String.Format("Create Evf Imaage Ref: {0:X}", err));
}
Thread.Sleep(2000);
}
favor proporcione más información -dllimport, EdsDownloadEvfImage firma – tom3k
esta es mi dllimport, [DllImport ("EDSDK.dll")] extern pública uint estática EdsCreateEvfImageRef (IntPtr inStreamRef, fuera IntPtr outEvfImageRef); – user1400
y ¿qué es la función de firma nativa? – tom3k