2010-02-24 79 views
11

我想用VC++构建一个非常复杂的开源项目。该项目由数十个库和一个可执行文件组成,具体取决于这些库。我可以问VC++链接器忽略未解析的外部?

对于一些原因,VC++链接器不希望看到这些库和报告上的每个“未解析外部引用”的一个实现约40的功能,所以我不能链接。我不想浪费时间解决问题 - 这些功能可能永远不会被调用。

我想只要问一下链接链接它认为并插入一些合理的错误处理(如报告错误和终止程序),而不是缺少的功能。我怎样才能做到这一点?

回答

13

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

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

使用此选项时,可能 无法运行创建的文件。

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

6

如果函数确实从未被调用过,那么为库创建实际的库(.lib文件)。那么链接器将只从库中提取需要的东西。

链接器的任务是解决所有的引用,所以我不认为你会得到它插入错误处理代码。

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

+0

+1为PS。 .c文件的名称与VisualStudio中的.cpp文件不同。根据您的设置,它们也可能使用不同的调用约定。 – 2010-02-24 14:31:51

+0

那么,有时候会被调用,但是当我使用这个程序的时候,这些路径永远不会被执行。所以链接器是正确的 - 它需要这个功能。我仍然希望它能够生成可执行文件。无论如何。 – sharptooth 2010-02-26 15:56:09

5

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

1

有一些明显的例外,但大多数开放源代码项目都没有设计的VisualStudio下待建。

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