c++visual-studio-2008linkergoogletest

What's the difference between gtest.lib and gtest_main.lib?


Google's C++ Test Framework has two output libraries: one is gtest.lib and the other one is gtest_main.lib. According to Nik Reiman's answer on how to setup gtest with Visual Studio, we should link to gtest_main.lib but I'm linking to gtest.lib and the sample test cases that I have are running fine.

What's the difference between the two libraries and does it matter which one I link to?


Solution

  • the only reasonable difference is that gtest_main.lib provides a default implementation of a test application entry point (i.e. main function):

    Citation from Getting started with Google C++ Testing Framework:

    "[...] maybe you think that writing all those main() functions is too much work? We agree with you completely and that's why Google Test provides a basic implementation of main(). If it fits your needs, then just link your test with gtest_main library and you are good to go."

    If you want to write your main function yourself - you should link with gtest.lib.