【发布时间】:2013-05-07 10:54:05
【问题描述】:
我有一堆文件,编译成一个库,链接到各个项目,但大多数项目只需要相对较小的一部分。所以我需要把它分成几层。
要正确地做到这一点,我想检查下层不依赖于上层的任何东西。在 Linux 上,我只需将库共享并将 -Wl,--no-undefined 传递给链接。但是我需要在动态库需要显式导出并且源没有为此准备好的 Windows 上执行此操作。
我还可以为每一层准备一个单元测试,并在链接期间弹出未定义的符号。但是,我只对一小部分类进行了单元测试,即使我添加了它们,如果添加了某些东西但没有经过测试,它们仍然不会捕获。
那么有没有其他方法可以检查静态库是否不需要任何符号,除了指定的其他库集?我可以使用 Visual C++ 9.0 (2008) 或 MinGW。
【问题讨论】:
-
-no-undefined 是 link.exe 的默认值,不清楚为什么需要以不同方式执行此操作。您也不需要在源代码中显式导出,只需 .def 文件中的列表即可。
-
@HansPassant:静态库不是使用
link.exe构建的,我相信我提到了为什么我不能让它们在 Windows 上共享 (dll)。