首页 > 解决方案 > 使用 gtest 测试共享库 (.so)

问题描述

我有一个共享库 libpid.so

为它创建了一个 gtest。

在 gtest 中使用 #include "libpid.cpp" 的方法有效。

但是,如果我尝试将 gtest 与 .so 链接起来,它会像这样失败:

g++ gtest_libpid.cpp -o gtest_libpid /usr/lib/libgtest.a -lpthread -ldl -L. -lpid
In file included from /usr/include/gtest/gtest.h:1874:0,
                 from gtest_libpid.cpp:1:
gtest_libpid.cpp: In member function ‘virtual void LibpidTest_GetpidInit_Test::TestBody()’:
gtest_libpid.cpp:8:15: error: ‘getpid_init’ was not declared in this scope
  ASSERT_EQ(0, getpid_init());
               ^
gtest_libpid.cpp:8:15: note: suggested alternative: ‘getpid’
gtest_libpid.cpp:10:12: error: ‘r_getpid’ was not declared in this scope
  ASSERT_NE(r_getpid, nullptr);
            ^
gtest_libpid.cpp:10:12: note: suggested alternative: ‘__getpgid’
gtest_libpid.cpp:11:12: error: ‘r_fork’ was not declared in this scope
  ASSERT_NE(r_fork, nullptr);
            ^
gtest_libpid.cpp:11:12: note: suggested alternative: ‘vfork’
gtest_libpid.cpp:12:12: error: ‘r_clone’ was not declared in this scope
  ASSERT_NE(r_clone, nullptr);
            ^
gtest_libpid.cpp:12:12: note: suggested alternative: ‘clone’

使用 gtest 测试 .so 共享库的正确方法是什么?

标签: c++linuxshared-librariesgoogletest

解决方案


推荐阅读