我已经浪费了很多时间来解决这个问题,但没有成功。一开始,我的配置:Ubuntu 16.04.1,qmake 3.0,cmake 3.5.1,共享gtest和gmock库,版本1.8.0。我使用 Qt Creator,这是导致暗恋的最小程序的一个小例子。

主.cpp:

#include <iostream>
#include <gtest/gtest.h>
#include <gmock/gmock.h>

using namespace std;

class A {
    void print() {
        std::cout << "PRINT" << std::endl;
    }
};

class B: public A {
    MOCK_METHOD0(print, void());
};

TEST(MOCK, TEST) {
    B b;
}

int main(int argc, char *argv[])
{
    ::testing::InitGoogleTest(&argc, argv);
    return RUN_ALL_TESTS();
}

google_test.pro:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

LIBS += -lgtest -lgmock

测试正常,但在程序结束时出现此错误:

* `/home/aminought/QtProjects/build-google_test-Desktop_Qt_5_7_0_GCC_64bit-Debug/google_test' 中的错误:双重释放或损坏(!prev):0x0000000001a51270 *

如何修复此错误?很烦人。

最佳答案

此问题仅在将 google 测试编译为共享库时发生。我不知道为什么,但简单地将共享库替换为静态可以解决问题。

关于c++ - Gtest 和 Gmock - 双自由或腐败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41404836/

10-11 19:29