为什么我的Visual C++ .exe项目构建创建.lib和.exp文件?

neu*_*rte 17 linker visual-c++ exp

我有一个由3个项目组成的解决方案.一个是静态库,两个是基于控制台的.exe文件,它们依赖于此库并链接到该库.他们的设置似乎相同.我建立了其中一个:

1> ------ Build build:项目:masksample,配置:Debug Win32 ------
1>编译...
1> stdafx.cpp
1>编译...
1> masksample.cpp
1>编译显示资源...
1>链接...
1> LINK:C:\ Users\DarekSz\Praca\cci\Debug\masksample.exe未找到或未由最后一个增量链接构建; 执行完整链接
1>嵌入清单...
1>掩码样本 - 0错误,0警告
==========构建:1成功,0失败,1最新, 0跳过==========

然后我继续建造另一个:

1> ------ Build build:项目:calibsample,配置:Debug Win32 ------
1>编译...
1> stdafx.cpp
1>编译...
1> calibsample.cpp
1>编译显示资源...
1>链接...
1>链接:C:\ Users\DarekSz\Praca\cci\Debug\calibsample.exe未找到或未由最后一个增量链接构建; 执行完整链接
1>创建库C:\ Users\DarekSz\Praca\cci\Debug\calibsample.lib和对象C:\ Users\DarekSz\Praca\cci\Debug\calibsample.exp
1>嵌入清单...
1> calibsample - 0错误,0警告
==========构建:1成功,0失败,1最新,0跳过==========

为什么链接器这次会创建.lib和.exp文件?是否有一些选项可以打开和关闭我在不知情的情况下激活它?

Fra*_*sco 19

这有点晚了,但也许其他人可以找到有用的提示.

顺便说一句我不是c ++大师......

在我的解决方案中,我有3个项目.一个是dll项目,其他是两个引用dll项目的Win32应用程序项目.

通常,在构建了dll之后,还会为NON dll项目生成其他一些文件(.exp,.lib).当您将dll项目的.h文件包含到app项目中时,会出现这种情况,该项目包含一个标有__declspec(dllexport)的类.

为了避免链接器认为您试图将某些.h文件包含到"export"中,请使用条件表达式来定义_declspec宏.

例:

#if defined(_DO_NOT_EXPORT)
#define DllExport  
#else
#define DllExport __declspec(dllexport)
#endif
Run Code Online (Sandbox Code Playgroud)

好的,假设你的dll项目中有一个MyClass.h.

在您的.h文件中,您现在可以拥有:

class DllExport MyClass {
 ...
}
Run Code Online (Sandbox Code Playgroud)

如果要将此.h文件包含到NON dll项目中,只需定义_DO_NOT_EXPORT条件即可

#define _DO_NOT_EXPORT
#include "MyClass.h"
Run Code Online (Sandbox Code Playgroud)


Jer*_*fin 5

如果一个或多个函数从您的可执行文件中导出,这是正常的。