2016-12-31 68 views
3

我已經浪費了很多小時來解決這個問題,但沒有成功。起初,我的配置:Ubuntu 16.04.1,qmake 3.0,cmake 3.5.1,共享gtest和gmock庫,版本1.8.0。我使用Qt Creator,這是導致迷戀的最小程序的一個小例子。Gtest和Gmock - 雙重免費或腐敗

main.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':double free或corruption(!prev):0x0000000001a51270 *

如何解決此錯誤?很煩人。

+0

我已經執行了你的代碼,我沒有得到那個錯誤。 gtest 1.8.0.1,gmock 1.8.0.1,QMake 3.0版,Qt 5.7.1版,cmake 3.7.1.1 – eyllanesc

+0

升級到cmake 3.7.1和g ++ 5.4.1。現在的錯誤看起來是這樣的: ***錯誤'/ home/aminought/QtProjects/build-google_test-Desktop_Qt_5_7_0_GCC_64bit-Debug/google_test':free():無效指針:0x0000000001864fb0 *** – logumanov

+0

我使用:g ++(GCC) 6.2.1 20160830 – eyllanesc

回答

1

只有谷歌測試編譯爲共享庫纔會出現此問題。我不知道爲什麼,但簡單地將共享庫替換爲靜態解決了這個問題。

+0

這聽起來像編譯標誌在構建庫時不同。 – Rudi

+0

只有-DBUILD_SHARED_LIBS = ON – logumanov