[Mono-bugs] [Bug 52834][Cri] New - mono windows version P/Invoke bug

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Tue, 13 Jan 2004 19:09:58 -0500 (EST)

Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by liyul@hotmail.com.


--- shadow/52834	2004-01-13 19:09:58.000000000 -0500
+++ shadow/52834.tmp.8616	2004-01-13 19:09:58.000000000 -0500
@@ -0,0 +1,39 @@
+Bug#: 52834
+Product: Mono/Runtime
+Version: unspecified
+OS Details: 
+Status: NEW   
+Priority: Critical
+Component: misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: liyul@hotmail.com               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+Summary: mono windows version P/Invoke bug
+The mono runtime windows version P/Invoke use cdecl for winapi. Resulted in
+assembly not working with Microsoft implementations. 
+It is actually more tricky that appearance. Since Microsoft C# only
+supports stdcall in callback (Runtime and IL support it), so the code
+written for Microsoft runtime doesn't run on mono and vice versa.
+For example, mono SQliteClient use sqlite.dll, which uses cdecl for all
+export and callback functions. The assembly is not useable with Microsoft
+.net implementation and they appear to be wrong (all those call conventions
+are winapi).
+There's a related bug number 52831. The callback.il from "Inside Microsoft
+.net Assembler", allows Microsoft .net runtime to support cdecl callback.
+However, it cannot compile with mono ilasm. The one compiled by Microsoft
+ilasm crashes with mono 0.28 windows version with message:
+**ERROR**: Invalid IL code at IL0013 in .<Module>:print32(void*,int): call