There&#39;s a slight issue with that unfortunately. If you&#39;re on Windows64, and int is still an int32. If you&#39;re on nix64, an int is an int64. So, if you *only* care about linux support, then the change you outlined is perfect, however if you want to retain Win64 support, you can&#39;t do that.<br>
<br>There are two ways to enable support for both 64bit platforms.<br>1) Write 2 sets of p/invokes and detect at runtime which one you should call. One exposes an int32, the other an int64.<br>2) Write a glue library in C which you p/invoke. This native library will expose an int64 in it&#39;s public api (the one you p/invoke) and then the glue library will call into the regular odbc32.dll library.<br>
<br>Which is suitable, i can&#39;t say. Someone else would have to decide that.<br><br>Alan.<br><br><div class="gmail_quote">On Tue, Mar 18, 2008 at 10:26 PM, Mads Bondo Dydensborg &lt;<a href="mailto:mbd@dbc.dk">mbd@dbc.dk</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hi there<br>
<br>
In libodbc.cs, imports are on this form:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[DllImport(&quot;odbc32.dll&quot;)]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;internal static extern OdbcReturn SQLGetData (<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntPtr StatementHandle,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ushort ColumnNumber,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SQL_C_TYPE TargetType,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ref OdbcTimestamp TargetPtr,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;int BufferLen,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ref int Len);<br>
<br>
BufferLen and Len are ints. However, on 64 bit odbc (tested with Debian<br>
4.0/AMD using Sybase 9.0.2), they need to be long/64 bit. This works, whereas<br>
the above does not:<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;[DllImport(&quot;odbc32.dll&quot;)]<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;internal static extern OdbcReturn SQLGetData (<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;IntPtr StatementHandle,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ushort ColumnNumber,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SQL_C_TYPE TargetType,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ref OdbcTimestamp TargetPtr,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.Int64 BufferLen,<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ref System.Int64 Len);<br>
<br>
There are problem also other places, besides SQLGetData<br>
<br>
So, what to do? Should I just file a bug, or any suggestions on a patch? I<br>
have no idea about Odbc per se, I just needed this to work. :-/<br>
<br>
Regards<br>
<br>
Mads<br>
<br>
--<br>
Med venlig hilsen/Regards<br>
<br>
Systemudvikler/Systemsdeveloper cand.scient.dat, Ph.d., Mads Bondo Dydensborg<br>
Dansk BiblioteksCenter A/S, Tempovej 7-11, 2750 Ballerup, Tlf. +45 44 86 77 34<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</blockquote></div><br>