Botan的Boost Test和QtTest内存访问违规



我一直在努力解决这个问题,到目前为止还无法实现。使用botan的简单main可以很好地工作,但当我将相同的代码放入单元测试时,它会失败。

// keygeneration_test.cpp
#define BOOST_TEST_DYN_LINK 
#include <boost/test/unit_test.hpp> // shuold use this one if using dynamic linking
#include <botanbotan.h>
#include <botanrsa.h>
BOOST_AUTO_TEST_SUITE(keygeneration_suite)
BOOST_AUTO_TEST_CASE(rsa_key_generation)
{
    BOOST_TEST_MESSAGE("generating key");
    try
    {
        Botan::LibraryInitializer init;
        Botan::AutoSeeded_RNG rng;
        rng.reseed(10096);
        Botan::RSA_PrivateKey rsaPrivate(rng, 1024);
    }
    catch (std::exception& e)
    {
        BOOST_TEST_MESSAGE(e.what());
    }
}
BOOST_AUTO_TEST_SUITE_END()

--

// main.cpp
#define BOOST_TEST_DYN_LINK
#define BOOST_TEST_MODULE cryptography test //module define should be only here, it takes care of creating entry point
#include <boost/test/unit_test.hpp> // should use this one if using dynamic linking

然后我尝试将init放在主入口点中,如下所示:

//main.cpp
#define BOOST_TEST_DYN_LINK // Make the exe link dynamically
#define BOOST_TEST_NO_MAIN
#include <boost/test/unit_test.hpp> // should use this one if using dynamic linking
#include <botanbotan.h>
bool init_function()
{
    return true;
}
int main(int argc, char* argv[])
{
    Botan::LibraryInitializer init;
    return boost::unit_test::unit_test_main(&init_function, argc, argv);
}

它们都显示了相同的错误:

正在运行1个测试用例。。。未知位置(0):中的致命错误"rsa_key_generation":地址处发生内存访问冲突0x00141000,在尝试读取无法访问的数据时

***在测试套件"加密测试"中检测到1个故障检测到内存泄漏!正在转储对象->{670}正常块0x0000000000221380,16字节长。数据:78 EA 13对象转储完成。

只是为了记录在案,我尝试过的一个简单的压缩测试或我所做的任何事情都很好,但当我尝试创建一个带有botan初始化的测试时,无论我尝试什么,它都会失败


编辑:我尝试过Qt测试,结果也是如此。这真的很奇怪。有人经历过这样的事情吗?有人能复制这个吗

发现了令人讨厌的问题。代码生成已设置为多线程调试DLL。由于某些原因,更改为多线程DLL使其工作。我想可能是因为botan是为发布而编译的。(最好能从编译器那里得到提示或建议…)

相关内容

  • 没有找到相关文章

最新更新