0

我在 Windows 上工作,在 Visual Studio 2019 中,使用 librdkafka.redist NuGet 包 v1.50。

我已经将 librdkafka producer.cpp 示例代码复制/粘贴到我的空 C++ 项目中,仅将一行更改为如下:

#include <librdkafka/rdkafkacpp.h>

我还修改了 build/native/librdkafka.redist.targets,将出现的“librdkafka.lib”替换为“librdkafkacpp.lib”,因为我正在使用 C++。

在所有情况下,命令行参数都是“127.0.0.1 test”。我在本地运行 Kafka,主题是“测试”。

使用此设置,项目作为发布可执行文件构建并运行得很好。我可以键入要生成的字符串,它们是为主题测试而生成的。

如果我切换到调试配置(32 位或 64 位,没关系),程序构建得很好,但在运行它时,它会在尝试调用时立即崩溃:

conf->set("bootstrap.servers", brokers, errstr)

发生此崩溃时,经纪人确实是“127.0.0.1”。

这是在调用之后:

RdKafka::Conf* conf = RdKafka::Conf::create(RdKafka::Conf::CONF_GLOBAL);

我不希望进入librdkafkacpp 代码,但它会很好地在运行调试可执行文件时实际正常运行。

我还证明了即使我不在调试器下运行调试可执行文件也会失败。它在 64 位 exe 中因此错误而崩溃。

Unhandled exception at 0x00007FF917F8C3F9 (msvcr120.dll) in KafkaFun.exe: 0xC0000005: Access violation reading location 0x0000002D4A150000.

这是 32 位 exe 中的错误:

Unhandled exception at 0x0100F41C (msvcr120.dll) in KafkaFun.exe: 0xC0000005: Access violation reading location 0xCD2BC8B0.

在我构建调试可执行文件时,它们显然存在严重问题。你知道问题是什么吗?

4

0 回答 0