2013-08-16 40 views
4

我得到了一個未定義的對主錯誤的引用 - 即使我定義了main和(AFAICT)正確地鏈接它。這裏是我的代碼,並命令我使用:g ++鏈接問題:函數`_start':(.text + 0x20):對'main'的未定義引用

// ################################################ 
//proj1.h 
#ifndef __SCRATCH_PROJ1_H 
#define __SCRATCH_PROJ1_H 

int addOne(int i); 

#endif /*__SCRATCH_PROJ1_H */ 

// ################################################ 

//proj1.cpp 
#include "proj1.h" 

int addOne(int i){ 
    return i+1; 
} 


// ################################################ 
//proj1_unittest.cpp 

#include "proj1.h" 
#include "gtest/gtest.h" 

// Test Function 
TEST(addOneTest, Positive) { 
    EXPECT_EQ(1,addOne(0));    
    EXPECT_EQ(2,addOne(1));    
    EXPECT_EQ(40320, addOne(40319)); 
} 

TEST(addOneTest, Negative) { 
    EXPECT_FALSE(addOneTest(-1));  
} 


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

這裏是控制檯輸出:

$ g++ -isystem -pthread -c ${SOURCE_DIR}/proj1.c -o ${SOURCE_DIR}/proj1.o 
$ g++ -o ${SOURCE_DIR}/mytest ${SOURCE_DIR}/*.o -L${GTEST_DIR} libgtest.a 
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start': 
(.text+0x20): undefined reference to `main' 
collect2: ld returned 1 exit status 

爲什麼沒有被發現由鏈接main()功能?

+3

GTEST_API_解析爲什麼? –

+0

它在你當前的項目目錄中gtest? –

+0

另外,請注意,您需要爲鏈接器提供具有'gtest.lib'和'gtest_main.lib'的'gtest'庫。 –

回答

5

據我所見,你不是編譯文件proj1_unittest.cpp(因爲你的代碼註釋有它)/ proj1_unittest.c(因爲你的控制檯輸出意味着)。

+0

是的,我忘了編譯.cpp文件,其中包含主:( –

相關問題