Build Succeeded,但不创建.lib文件

时间:2010-10-16 19:53:16

标签: visual-studio visual-studio-2008 visual-c++

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

谢谢!

9 个答案:

答案 0 :(得分:60)

打开“项目属性”(在“解决方案资源管理器”中右键单击项目,选择“属性”)。在“Librarian”下,选中“输出文件” - 这是输出的位置。

如果看起来正确,请在项目的合适子目录中尝试dir /s *.lib,看看是否可以按日期和时间找到输出库。如果仍然找不到它,请尝试清理重建(右键单击项目,选择“重建”)。

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

答案 1 :(得分:13)

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

答案 2 :(得分:2)

我也遇到了这个问题。

这是由于在输出目录定义中使用了无效的宏。在我的情况下,它是 enter image description here

应该是什么时候

enter image description here

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

答案 3 :(得分:2)

即使我已经在使用__declspec(dllexport)函数,我也遇到了同样的问题。

您的ProjectName.cpp文件需要#include "ProjectName.h"。如果不包括头文件,则不会导出函数。 DLL生成良好,没有错误或警告(至少在VS2017 15.8中),但是您没有得到LIB文件。

包括头文件和动臂-生成LIB文件。我确定是菜鸟犯错,但是每个人都必须在某个地方开始学习。

答案 4 :(得分:2)

如果要导出的方法在类中,则必须在该类上__declspec(dllexport)。否则将不会创建.lib。

答案 5 :(得分:1)

我正在从dll中导出类,但已在.h文件中内联声明了该类。 .cpp文件在那里,但是为空。此设置导致未生成.lib文件。

我将功能的实现移到了.cpp文件,现在生成了lib文件。

这是VS2019中的版本。

答案 6 :(得分:0)

在DLL项目中,将{.1和.cpp文件中定义的方法的__declspec(dllexport)开头。

毕竟,再次编译您的dll,以便生成.lib文件并准备进行链接。

put Class Foo
{
public:
    __declspec(dllexport) int GetFoo() const;

答案 7 :(得分:0)

VS2019在这里存在相同的问题。就我而言,我已经构建了几次,但都没有定义符号(即cpp文件为空)。

在将符号定义添加到cpp文件之后,我开始注意到此问题(没有生成任何lib文件)。

通过“全部重建”的简单清理方法将其修复。也许如果您在未定义符号的情况下进行构建,则某些内容将被缓存到您具有空产品DLL的某个位置,并且您需要清理解决方案以重置该缓存状态。

答案 8 :(得分:0)

我的问题是在项目Properties>C/C++>CommandLine中,我指定了错误的开关。 那不是写我写过/D_HASHING_BUILD_DLL的{​​{1}}。

旁注:
这就是我在Visual Studio中构建/D_Hashing_BUILD_DLL / DLL文件的方式:(我的Lib看起来像这样:)

Hashing.h

在我前面提到的路径中,我只使用这里定义的开关,然后就可以运行DLL了!