2013-03-20 100 views
0

几乎可以看到标题所说的内容。我一直试图在Windows下使用MinGW构建RabbitMQ,但没有成功。由人我见问如何使用它,我怀疑我作出了愚蠢的错误题量来看,但我不知道它是什么。我在Win7-64,我提取式回购,在它创建一个build目录,并运行使用MinGW在Windows上构建RabbitMQ-C

cmake -G "MinGW Makefiles" .. 

这似乎工作,然后

cmake --build . 

会抛出一堆函数重新声明错误。有人知道我在这里捣乱吗?

只是良好的措施,这些错误的一小部分:

Linking C shared library librabbitmq.1.dll 
CMakeFiles\rabbitmq.dir/objects.a(amqp_api.c.obj):amqp_api.c:(.rdata+0x3c): mult 
iple definition of `amqp_empty_array' 
CMakeFiles\rabbitmq.dir/objects.a(amqp_framing.c.obj):amqp_framing.c:(.bss+0x0): 
first defined here 
CMakeFiles\rabbitmq.dir/objects.a(amqp_api.c.obj):amqp_api.c:(.rdata+0x44): mult 
iple definition of `amqp_empty_table' 
CMakeFiles\rabbitmq.dir/objects.a(amqp_framing.c.obj):amqp_framing.c:(.bss+0x8): 
first defined here 
CMakeFiles\rabbitmq.dir/objects.a(amqp_api.c.obj):amqp_api.c:(.rdata+0x4c): mult 
iple definition of `amqp_empty_bytes' 
CMakeFiles\rabbitmq.dir/objects.a(amqp_framing.c.obj):amqp_framing.c:(.bss+0x10) 
: first defined here 
CMakeFiles\rabbitmq.dir/objects.a(amqp_connection.c.obj):amqp_connection.c:(.bss 
+0x0): multiple definition of `amqp_empty_array' 
CMakeFiles\rabbitmq.dir/objects.a(amqp_framing.c.obj):amqp_framing.c:(.bss+0x0): 
first defined here 
CMakeFiles\rabbitmq.dir/objects.a(amqp_connection.c.obj):amqp_connection.c:(.bss 
+0x8): multiple definition of `amqp_empty_table' 
CMakeFiles\rlibrabbitmq\CMakeFiles\rabbitmq.dir\build.make:271: recipe for targe 
t 'librabbitmq/librabbitmq.1.dll' failed 

编辑: 一段时间后,我已经确定问题是预处理器指令,必须在一定的误差他们写的方式。我现在不打算关闭它,如果我有时间来解决这个问题,我会回到这里,并给出解决方案。

回答

0

我一直在分析amqp.h文件中定义的宏和我已经添加了extern修饰符的AMQP_PUBLIC_VARIABLE宏时建立一个非静态库。

78 #elif defined(_WIN32) && defined(__MINGW32__) 
79 # if defined(AMQP_BUILD) && !defined(AMQP_STATIC) 
80 # define AMQP_PUBLIC_FUNCTION __declspec(dllexport) 
81 # define AMQP_PUBLIC_VARIABLE __declspec(dllexport) extern 

另一件事,那我不得不修改文件中的WINVER宏“/MinGW/include/windef.h” MinGW的环境中,以配合新的Windows版本。

11 #ifndef WINVER 
12 #define WINVER 0x0501 

在那之后,我已经建立了librabbitmq.1.dll库,而无需使用cmake -G "MinGW Makefiles"问题.. & & cmake --build .命令