我可以要求VC ++链接器忽略未解析的外部吗?

时间:2010-02-24 13:58:54

标签: c++ visual-c++ compiler-construction linker

我正在尝试使用VC ++构建一个非常复杂的开源项目。该项目由数十个库和一个可执行文件组成,具体取决于这些库。

由于某些原因,VC ++链接器不希望在其中一个库中看到大约40个函数,并且每个库都报告“未解析的外部引用”,所以我无法链接。我不想浪费时间解决问题 - 这些功能可能永远不会被调用。

我想让链接器链接它看到的内容并插入一些合理的错误处理(比如报告错误并终止程序)而不是丢失函数。我怎么能这样做?

4 个答案:

答案 0 :(得分:13)

您可以使用/FORCE:UNRESOLVED链接器选项。

该文档包含相当低调的警告:

  

使用此选项创建的文件可能   没有按预期运行。

在实践中,不会有错误处理 - 只是崩溃。

答案 1 :(得分:6)

如果真正从未调用过函数,则为库创建实际库(.lib文件)。然后链接器将仅从库中提取所需内容。

链接器的工作是解析所有引用,所以我认为你不会让它插入错误处理代码。

P.S。我要检查的第一件事是看C函数是否被编译为C ++,导致缺少符号。

答案 2 :(得分:5)

如果从未调用它们,请从项目中删除引用。如果他们被召唤,那么解决该死的问题。这里没有其他选择。

答案 3 :(得分:1)

有一些值得注意的例外,但大多数OpenSource项目并非设计用于在VisualStudio下构建。

通常,对于Windows端口,最好使用cygwinmingw系统。我的建议通常是mingw,除非程序使用很多Unix OSey调用,比如管道和信号。