Tag: 号角

.NET DLL需要接收一个Clarion回调程序,然后通过三个整数?

我正在为Clarion(Clarion是C ++编程语言)程序编写C#.NET DLL。 我很好地调用了C#.NET DLL,一切都很好。 但是,我需要C#.NET DLL接收Clarion过程以进行回调,然后能够调用该过程传递三个int参数。 Clarion Procedure看起来像这样(Clarion long是C#int): MyCallBack procedure(long p1, long p2, long p3) … Data … code … Code … 如何将abvoe过程传递给C#.NET DLL以及C#.NET DLL如何调用该过程传递三个int参数? 提前致谢。

CLARION日期转换C#+ DATE ADD / SUBTRACT

*(这是针对ISV数据库的,因此我对此进行逆向工程并且无法更改)… 如何在C#中执行以下日期转换为int(visa / versa)转换… 所以说日期是: 5/17/2012 它被转换为int 77207 在数据库中。 起初我以为这是一个朱利安日期,但似乎并非如此。 我正在使用朱利安日期问题的方法搞错,但这不匹配。 var date = ConvertToJulian(Convert.ToDateTime(“5/17/2012”)); Console.WriteLine(date); public static long ConvertToJulian(DateTime Date) { int Month = Date.Month; int Day = Date.Day; int Year = Date.Year; if (Month < 3) { Month = Month + 12; Year = Year – 1; } long JulianDay = Day + […]

将Clarion Procedure声明转换为C#DLLImport

如何将此Clarion过程声明转换为C#? 它是用C编写的第三方DLL的一部分,它没有太多文档。 我已经列出了正常工作的Clarion方法的原型。 在C#中,我不确定用什么类型替换*CString 。 我试过像@DanielC建议的char[] ,但它没有用。 我还发现Clarion long是32位(感谢@ shf301)。 号角: SendRequest Procedure(*CString xData,Long DataLen,Long xTimeout),Byte,Virtual C#(我试过的,哪个不起作用): [DllImport(“3RD_PARTY_API.dll”)] private static extern long SendRequest(ref string xData, int DataLen, int xTimeout); 当我在C#中调用SendRequest方法时,我从VS2010获得了标准的PInvokeStackImbalance检测错误。 我认为这是参数类型的问题,而不是DllImport声明中的CharSet或EntryPoint 。 我真的只是坚持如何将*CString转换为有效的C#类型。