title: error calling function ,[A call to PInvoke function unbalanced the stack]
body: <p>i have following code , once i run my application i get this error </p>
  
  <p>anyone know how i fix this error?</p>
  
  <p>ERROR:</p>
  
  <p>A call to PInvoke function 'testcamera!EDSDKLib.EDSDK::EdsDownloadEvfImage' 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</p>
  
  <pre><code> 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);
              }
  </code></pre>