2012-02-06 68 views
0

最近,我收到了一些奇怪的链接器错误。VC++目录代理奇怪

我一直被教导说有两种方式与图书馆合作:

通过

Project Properties > VC++ Directories > Include Directories 
Project Properties > VC++ Directories > Library Directories 

或通过

Project Properties > C/C++ > General > Additional Include Directories 
Project Properties > Linker > General > Additional Library Directories 
Project Properties > Linker > Input > Additional Dependencies 

最近,有时当我使用VC++目录的方式,我收到一个链接器错误,指出有些函数没有定义。当我将函数定义所在的库文件添加到其他依赖项时,它突然发现它。 但是,如果你使用VC++目录,通常你不应该使用额外的依赖关系,对吧?

这已经发生了好几次了,让我不知所措。它在过去的项目中工作得很好,但现在不再了。有时VC++的方式甚至可以在另一台PC上运行,但不是在我的电脑上。 我一直与VS2010合作,并且仍然与VS2010合作。

有没有人有线索怎么回事?

+0

VS在SMB上工作时似乎表现出非常不寻常的行为。 有没有可能使用的任何目录位于网络共享上? – 2012-02-06 18:16:47

+0

@Charles不,谢谢。 – xcrypt 2012-02-06 18:35:28

回答

1

即使您指定了其他包含目录,Visual Studio也不会自动尝试链接生成项目时存在的所有库文件。您必须采取额外的步骤将库文件名添加到其他依赖项列表中。其他包含目录仅有助于避免将整个文件路径写入其他依赖项列表中。

修改附加依赖项列表的替代方法是使用#pragma指令。具体来说,使用

#pragma comment("[lib file name]") 

这将指示链接器链接该文件在您的版本。

+0

澄清它。谢谢! 但是,我在这里讨论VC++目录。这些被称为“包含目录”,没有“额外”。要么你明白我的问题是错的,要么你犯了一个错字。 – xcrypt 2012-02-06 18:35:54