2010-10-16 80 views
34

我继承了大量的代码,其中包括一个应该(尽我所能地说)构建.lib文件的Visual Studio项目。 Visual Studio说:“...生成代码...创建库...创建浏览信息文件...”,并在最后说,它表示构建成功。在release/debug文件夹中,它有一堆.obj文件,但它没有.lib文件。我可能会错过什么?构建成功,但没有创建.lib文件

谢谢!

回答

47

打开项目属性(右键单击解决方案资源管理器中的项目,选择'属性')。在'图书管理员'下,检查'输出文件' - 这是输出应该去的地方。

如果看起来不错,请在您的项目的适当子目录中尝试dir /s *.lib,以查看是否可以按日期和时间查找输出库。如果你仍然无法找到它,请尝试一个干净的重建(右键单击项目,选择'重建')。

对于DLL,如果DLL没有为外部使用导出任何内容,则不会创建.Lib文件。我不认为这适用于静态lib构建,但我会确保您从您的库项目源代码中导出一些公开的内容。

+1

令人敬畏。没有你们,我不知道我会做什么!是的,问题在于图书管理员,之前的开发人员对他的主目录进行了硬编码。愚蠢的人。 – Jim 2010-10-16 20:57:21

+16

“对于DLL,如果DLL没有为外部使用导出任何内容,则不会创建.Lib文件。” - 那是我的问题。我通过重新配置头文件并丢失了我的__declspec(dllexport)宏来丢失我的.lib文件。 – ken 2013-09-30 16:30:27

+0

为什么当它是一个静态库时必须声明dllexport? – 2014-06-29 15:23:17

11

我的静态库只包含两个模板类,所以我没有.cpp文件。这导致Visual Studio 2015不输出.lib文件。为了解决这个问题,我创建了一个包含所有头文件的文件huh.cpp。

+1

在VS2015想要生成.lib文件之前,我必须将现有文件添加到“头文件”和“源文件”过滤器。 – oddRaven 2016-12-14 21:47:55

1

我刚刚遇到了这个问题。

这是由于在输出目录定义中使用了无效的宏。就我而言,这是 enter image description here

时,它应该是

enter image description here

我不得不空出的完整路径在第二截屏。我有一个不正确的宏。当我应该使用MsBuildProjectDirectory时,我正在使用MsBuildProjectDir。当输出目录有效时,只读文本框将显示完整路径(例如:C:\Development\blah\blah\blah\)。如果输出目录无效,则会得到类似于第一个屏幕截图的内容。

5

如果您错过为方法添加前缀__declspec(dllexport),.lib将不会生成。

相关问题