为什么 Visual Studio 会生成这些附加文件?

问题描述 投票:0回答:4

在 Visual Studio 放置已编译可执行文件的输出目录中,还有三个类型为

*.exp
*.lib
.pdb
的附加文件。我不需要这些文件,我想阻止编译器创建它们。

这就是我的构建输出目录的样子。我只需要

*.exe
文件。

output directory with unwanted additional files

这些附加文件有什么用?我怎样才能禁用它们的生成?如果构建过程需要它们,有没有办法在创建可执行文件后自动删除它们?

我使用的是 Visual Studio 2012。如果您需要更多详细信息,请评论。

c++ visual-studio build compilation
4个回答
7
投票

EXP 和 LIB 文件 但是我的 COM 库不需要那个 .lib 或 .exp 文件! 。您可以在“中间输出”设置中设置这些文件的位置,而不将它们放在您的发布文件夹中


3
投票

我假设您希望在最终发布目录中只保留 dll 和 exe 文件,并将 *.exp、*.lib、.pdb 文件保留在中间目录中,以免弄乱您正在使用的目录。

Visual Studio 2017

打开属性(在解决方案资源管理器中右键单击该项目): 更改设置,如图所示:

导入库将定义创建 .lib 和 .exp 文件的位置。 enter image description here

生成程序数据库文件定义创建 .pdb 文件的位置。 enter image description here

调试信息格式 -- None 将阻止创建 pdb 文件。 为发布版本选择此选项。 enter image description here


1
投票

里面有一些函数声明为 __declspec(dllexport)。 这意味着它们被导出,链接器认为需要链接这个动态库(无论是exe还是dll - 一般来说结构是相同的)并创建*.lib和*.exp文件


0
投票

要禁用

.EXP
.LIB
文件的生成:
在 VisualStudio GUI 中,转到:项目的
Properties->Linker->Command Line

...并添加:
/NOEXP
/NOIMPLIB

要禁用

.PDB
文件的生成:
在 VisualStudio GUI 中,转到项目的
Properties->Linker->Debugging->Generate Debug Info

...然后选择
No

© www.soinside.com 2019 - 2024. All rights reserved.