0

我们希望生成 Windows 静态库,这些库仅具有用于记录的 API 函数的公共符号。我们想去掉所有其他符号。

这对于 *NIX 库来说很容易;您可以使用strip(1)实用程序并指定--keep-symbol=foo,甚至可以将整个符号列表放入文件中并指定文件。

我们如何为 Windows 库做到这一点?

更详细一点:假设我们正在创建一个库,它是由多个 .C 文件构建的。

util.c定义函数util_foo()util_bar()math.c定义some_math_func(). 然后lib.c定义函数api_func_0()api_func_1()。API 函数调用实用程序和数学函数,因此这些函数不得声明为静态的。当我们编译每个 .c 文件时,公共符号都在目标文件中,然后当我们链接目标文件以创建库时,链接器将使所有公共符号可见。一旦链接器生成了静态库,我们只需要符号api_func_0api_func_1可见的。

4

0 回答 0