2011-10-25 24 views
1

我的链接器(来自Microsoft Visual C++ 2005的link.exe)可能会尝试优化其作业,并且不会将文件包含的所有对象a *.lib静态链接到最终的可执行文件中,这对于我来说是必需的,因为后续的配置文件任务是必需的。我如何强制link.exe将所有符号(即使在源代码中未被引用)包含到最终的可执行文件中?链接器optizimation

所以问题是我有一个库文件,mylib.lib,其中包含foo.obj,bar.objqux.obj

我的源代码文件引用了foo.obj中的符号。

当我将静态源代码链接到库文件mylib.lib时,它仅链接到foo.obj,没有其他符号连接到最终可执行文件,而我需要它们(以便它们随进程一起加载到内存中)。

我尝试了很多解决方案,没有成功。它是优化吗?我不想要它。

回答

1

在某种程度上,这就是连接器的工作原理 - 它们挑选那些包含库引用的符号或其应该构建的可执行文件的对象模块,并忽略其余部分。这不是一个真正的优化,而是他们应该工作的方式。

确保将其他目标文件链接到可执行文件中的最简单方法是引用其中的符号。只要确保已关闭“功能级别链接”,因为这会消除引用符号的效果。