gpt4 book ai didi

c - 使用 MinGW 在 Windows 上构建 RabbitMQ-C

转载 作者:行者123 更新时间:2023-11-30 17:53:31 25 4
gpt4 key购买 nike

和标题差不多。我一直在尝试使用 MinGW 在 Windows 下构建 RabbitMQ 但没有成功。从我看到询问如何使用它的人数来看,我怀疑我犯了一个愚蠢的错误,但我不知道它是什么。我使用的是 Win7-64,我正在提取存储库,在其中创建一个构建目录,然后运行

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

编辑:一段时间后,我确定问题在于预处理器指令的编写方式存在一些错误。我现在不会关闭此问题,如果我有时间解决整个问题,我会回到这里并留下解决方案的答案。

最佳答案

我一直在分析 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

另一件事是,我必须修改 MinGW 环境中文件“/MinGW/include/windef.h”上的 WINVER 宏以适应新的 Windows 版本。

11 #ifndef WINVER
12 #define WINVER 0x0501

之后,我使用 cmake -G "MinGW Makefiles" .. && cmake --build . 命令毫无问题地构建了 librabbitmq.1.dll 库

关于c - 使用 MinGW 在 Windows 上构建 RabbitMQ-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15534230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com