c中包含static函数的lib怎么进行gtest单元测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c中包含static函数的lib怎么进行gtest单元测试相关的知识,希望对你有一定的参考价值。

参考技术A 界面显得清晰,将各种查询条件放到FieldSet中,并可以设置FieldSet的标题和是否可以折叠。 布局方式有很多,像这种需要将很多信息放在一排的情况,可以使用column方式的layout,但是如果信息多,那要写太多的列,而且控制起来很不方便。

如何在 gn 中包含共享库

【中文标题】如何在 gn 中包含共享库【英文标题】:How to include a shared library in gn 【发布时间】:2021-05-07 10:13:06 【问题描述】:

我有一个 BUILD.gn,我想在其中包含一个位于 usr/lib 的共享库。 我已经参考了这个话题How to include a shared library in chromium's gn file?

但是 .so 文件没有与主函数链接。下面是BUILD.gn代码:-

executable("check") 
  sources = [ "check.cpp" ]
  deps = [
    ":SampleCheck",
    ]
  lib_dirs = [ "//usr/lib/SampleFile.so" ]
  libs = [ "SampleFile" ]

shared_library("SampleCheck") 
  sources = [
    "SampleCheck.h", // Header file for functions
  ]

但是,执行此操作时出现错误:-

ninja: Entering directory `out'
[0/1] Regenerating ninja files
[1/1] LINK main
FAILED: main 
g++ -Wl,-rpath=\$ORIGIN/ -Wl,-rpath-link= -L../usr/lib/SampleFile.so -o main -Wl,--start-group @main.rsp  -Wl,--end-group -lSampleDll.so
/usr/bin/ld: cannot find -lSampleDll.so
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.

我调查了许多网站,但我不知道我哪里错了?

【问题讨论】:

【参考方案1】:

这条线看起来很可疑:

  lib_dirs = [ "//usr/lib/sampleFile.so" ]

GN 使用// 来表示GN 项目的根,以.gn 文件的存在为标志。 lib_dirs 知道绝对文件系统允许像你这样的结构;您可以只使用一个正斜杠来指示根文件系统。

另外,lib_dirs 的目的是将 directories 添加到链接器的搜索路径:https://gn.googlesource.com/gn/+/master/docs/reference.md#var_lib_dirs

你给它的是一个文件,而不是一个目录。

请尝试:

  lib_dirs = [ "/usr/lib" ]

这应该将您的链接行更改为

g++ -Wl,-rpath=\$ORIGIN/ -Wl,-rpath-link= -L/usr/lib -o main -Wl,--start-group @main.rsp  -Wl,--end-group -lSampleDll.so

这可能更接近您的预期;链接器看到所需的SampleDll.so 并将搜索/usr/lib

【讨论】:

以上是关于c中包含static函数的lib怎么进行gtest单元测试的主要内容,如果未能解决你的问题,请参考以下文章

51单片机一个工程中包含多个C文件怎么使用

后台提示,你的参数中包含非法字符,怎么办?

从 Stroustrup 的书中包含 std_lib 时,不理解 VS 中 HelloWorld 上的错误 [重复]

在 Cmake 中包含 pkg-config --cflags --libs gtk+-2.0

c语言动态库的加载问题!!!!请高手指点!!!!!!!!

django如何在模板中包含javascript