Did the same code change the other day, and can also confirm that it works.<div><br></div><div>If I recall, all the compiler warnings were because of the 8-byte size_t on x64. I didn't dive any deeper than just reading the warnings.<div>
<br></div><div>Here is the fix to get the CLR bindings to run against either x86 and x64. I don't have a github account yet...</div><div><br></div><div>zmq.cs</div><div><div><div>182,184c182,183</div><div><         //  TODO: Size of zmq_msg_t may differ depending on platform.</div>
<div><         //  For example, on Win64 it'll definitely be longer.</div><div><         private const int ZMQ_MSG_T_SIZE = 36;</div><div>---</div><div>>         // Determine if we're 64 or 32 bit and set msg size accordingly</div>
<div>>         private readonly int ZMQ_MSG_T_SIZE = IntPtr.Size == 4 ? 36 : 40;</div></div><div><br></div><div>Have tested that the binding works as expected in a Windows environment with a x64 ZMQ build.</div><div><br>
<div class="gmail_quote">On Wed, Apr 14, 2010 at 11:41 AM, Apps, John <span dir="ltr"><<a href="mailto:john.apps@hp.com">john.apps@hp.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Not too long ago, someone asked about compiling 0MQ on Windows X64. With the help of my colleague, Brett Cameron, I have a working version compiled using VS2010 and running on Windows 7 X64.<br>
Only one minor change was required in atomic_ptr.hpp:<br>
<br>
#if defined ZMQ_ATOMIC_PTR_WINDOWS<br>
//            return (T*) InterlockedExchangePointer (&ptr, val_);<br>
            return (T*) InterlockedExchangePointer ((PVOID *) &ptr, val_);<br>
<br>
The change is a quick solution and is not, in my mind, what really should be done. There are a  number of preprocessor statements which equate X86 with X64, thus leading to the use of 32-bit pointers and data types. These should be changed to differentiate between the two machine types.<br>

<br>
<br>
Does it work? Yes. Is it faster? Do not know yet, hope to do some testing in the near future as time permits.<br>
----------------------------------------------------<br>
Dumps of the respective programs, LOCAL_LAT in this case, show the X86 and X64 images. See below.<br>
<br>
Dump of file \\bigwinnie\bigwinniec$\amqp\zeromq-2.0.6\bin\local_lat.exe<br>
<br>
PE signature found<br>
<br>
File Type: EXECUTABLE IMAGE<br>
<br>
FILE HEADER VALUES<br>
             14C machine (x86)<br>
               7 number of sections<br>
        4BAB295D time date stamp Thu Mar 25 10:14:05 2010<br>
               0 file pointer to symbol table<br>
               0 number of symbols<br>
              E0 size of optional header<br>
             102 characteristics<br>
                   Executable<br>
                   32 bit word machine<br>
----------------------------------------------------<br>
Dump of file C:\amqp\zeromq-2.0.6\bin\local_lat.exe<br>
<br>
PE signature found<br>
<br>
File Type: EXECUTABLE IMAGE<br>
<br>
FILE HEADER VALUES<br>
            8664 machine (x64)<br>
               7 number of sections<br>
        4BC5D8E8 time date stamp Wed Apr 14 17:02:00 2010<br>
               0 file pointer to symbol table<br>
               0 number of symbols<br>
              F0 size of optional header<br>
              22 characteristics<br>
                   Executable<br>
                   Application can handle large (>2GB) addresses<br>
----------------------------------------------------<br>
-- <a href="mailto:John.Apps@hp.com">John.Apps@hp.com</a> | +491718691813 | <a href="http://twitter.com/johnapps" target="_blank">http://twitter.com/johnapps</a> --<br>
<br>
_______________________________________________<br>
zeromq-dev mailing list<br>
<a href="mailto:zeromq-dev@lists.zeromq.org">zeromq-dev@lists.zeromq.org</a><br>
<a href="http://lists.zeromq.org/mailman/listinfo/zeromq-dev" target="_blank">http://lists.zeromq.org/mailman/listinfo/zeromq-dev</a><br>
</blockquote></div><br></div></div></div>