gpt4 book ai didi

c++ - 检查静态库是否定义了所有符号

转载 作者:可可西里 更新时间:2023-11-01 14:25:07 29 4
gpt4 key购买 nike

我有一堆文件,它们被编译成一个链接到各种项目的库,但大多数项目只需要相对较小的一部分。所以我需要把它分成几层。

为了正确地做到这一点,我想检查下层是否不依赖于上层中的任何东西。在 Linux 上,我只是让库共享并将 -Wl,--no-undefined 传递给链接。但我需要在 Windows 上执行此操作,其中动态库需要显式导出并且源代码没有为此做好准备。

我还可以为每一层准备一个单元测试,并在链接期间弹出 undefined symbol 。但是,我只对类的一小部分进行单元测试,即使我添加了它们,如果添加了某些内容但未进行测试,它们仍然无法捕获。

那么除了指定的一组其他库之外,还有其他方法可以检查静态库是否不需要任何符号吗?我可以使用 Visual C++ 9.0 (2008) 或 MinGW。

最佳答案

嗯,我可以与您分享一些我想出的强制链接特定于 visual studio 的东西。它并不是完全扫描以确保所有符号都已链接,尽管这在强制注册全局变量链接时对我自己有用(实际上并未在代码中的任何地方引用)。放置在标题中:

#define DECLARE_OBJ( TYPE, INSTANCE_NAME ) \
extern "C" TYPE INSTANCE_NAME; \
__pragma( comment ( linker, "/INCLUDE:_" __STRINGIZE( INSTANCE_NAME ) ) )

这会发出有关两个编译时字符串之间的空格的警告。 iirc 我把警告去掉了,因为它完全没用。希望这会有所帮助。

关于c++ - 检查静态库是否定义了所有符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16417243/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com