[rabbitmq-discuss] How to compile rabbitmq-c with visual c++ 2005?

Erik Anderson erikba at odysseus.anderson.name
Fri Feb 5 18:14:40 GMT 2010


Going through the list of digests, missed this thread.  I do have a
**basic** compile of rabbitmq-c working, but I still need to do some
massive code review, I don't believe that it's doing any error
checking at all right now for instance.  Plus as I did it as part of
my job, I'm going to be a bit slow in releasing source
(unfortunately).  I can tell you the issues that I ran into however.

amqp_framing.[ch] are not included in the source and must be
generated.  This cannot be done on a Windows machine.  Find a linux
box and follow at least part of the instructions to build these files

There are a number of references to use of a block as the result of an
expression i.e. expressions of the form "myThing = ({var innerVar;
innerVar=someFunc(); func2(); innerVar });  This structure is unknown
to MS and must be removed.  I rewrote some macros including
AMQP_SIMPLE_RPC, AMQP_MULTIPLE_RESPONSE_RPC to either push casts into
the caller or into a new wrapper function)

Many of the D_ and E_ macros had similar issues and needed to be
changed to functions.

All code calls to AMQP_CHECK_RESULT that expected a response needed to
be rewritten.

There are a number of refrerences in amqp_framing to empty
structures.  These need to be modified as follows:
when declaring, the braces { } must be removed
in amqp_decode_method, any attempt to dereference an empty structure
must be replaced with "*decoded = NULL"

All the datatypes in use must be typedef'ed against the MS-specific
types.  For example, "typedef unsigned __int64 uint64_t"

All socket operations must be translated to use Winsock.  The data
type of a socket changes from "int" to "SOCKET", all references to
read(),write(), close(), and errno must be changed to send(), recv(),
closesocket(), and something I haven't looked for yet

A shortcut is used to initialize structs that is not supported by MS.
The members of a struct must be initialized explicitly.  #defines
describing common structs have been changed to "static const".

Other than some of the usual porting dust, those were the highlights.
Still wanna do it?

On Jan 29, 2:42 am, Matthew Sackman <matt... at lshift.net> wrote:
> On Fri, Jan 29, 2010 at 05:32:10PM +0800, techabc wrote:
> > Can rabbitmq-c be compiled use microsoft vc8, and how?
> > My application developed with vc++, so I want it.
>
> It's unlikely. Rabbitmq-c is in a highly experimental state and I
> believe it contains some features of C that are specific to gcc.
>
> Yesterday someone else reported on this list that they managed to get
> Rabbitmq-c to compile under Windows, but it took them two weeks of
> effort. You might like to liaise with them to share the necessary
> details.
>
> This was mentioned near the bottom ofhttp://old.nabble.com/Re:-error-message-trying-to-start-stomp-adapter...
>
> Matthew
>
> _______________________________________________
> rabbitmq-discuss mailing list
> rabbitmq-disc... at lists.rabbitmq.comhttp://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss




More information about the rabbitmq-discuss mailing list