Hi,
I have a delphi dll which I am trying to call from C# but something
isn't working, I get an SEHException thrown by the dll but I don't get
enough info to debug it. I can't change the dll either.
Could someone please take a look and see if or what I'm doing wrong?
Many thanks,
John Walsh
class ConversionNative
{
public delegate bool ConversionEventHandler(int currentFrame,
int totalFrames);
public event ConversionEventHandler ConversionStatus;
[DllImport("swf2avi.dll", EntryPoint="CreateAVI",
CallingConvention = CallingConvention.StdCall)]
public static extern void CreateAVI(ref TVideoParams
videoParams);
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi,
Pack = 1)]
public class TVideoParams {
public int mailForm_handle;
[MarshalAs(UnmanagedType.ByValTStr , SizeConst=150)] public
string swf_name;
[MarshalAs(UnmanagedType.ByValTStr , SizeConst=150)] public
string avi_name;
public int avi_bitrate;
public byte avi_fps;
public byte avi_gop;
[MarshalAs(UnmanagedType.FunctionPtr)]public
ConversionEventHandler callback_fn;
}
public void convert()
{
ConversionStatus = updateStatus;
TVideoParams vParams = new TVideoParams();
vParams.avi_bitrate = 22000;
vParams.avi_fps = 3;
vParams.avi_gop = 12;
vParams.avi_name = @"C:\test\Slide4.avi";
vParams.swf_name = @"C:\test\Slide4.swf";
//vParams.mailForm_handle = 0;// new IntPtr(1);
vParams.callback_fn = ConversionStatus;
CreateAVI(ref vParams);
}
private bool updateStatus(int currentFrame, int totalFrames){
Console.WriteLine ("Processed " + currentFrame + " out of "
+ totalFrames + " frames...");
return true;
}
}