如何在Visual C++ .exe项目中不生成.lib和.exp文件

4

当我在Visual Studio中构建C++项目并输出.exe文件时,它会创建我的项目的.lib和.exp文件,并且需要很长时间。我在stdafx.h(预编译头文件)的开头添加了_DO_NOT_EXPORT条件,以尝试跳过此步骤,但是每次构建结束仍然会创建.lib和.exp文件。我是否在正确的位置添加了条件?


4
你需要在源代码中找到__declspec(dllexport)属性,然后采取必要的措施确保编译器看不到它。但这并不总是可行的,因为可能不是你的代码。如果无法实现,只能表示一声“遗憾”。 - Hans Passant
@HansPassant 我相信 __declspec(dllexport) 属性是在我包含在 stdafx.h 中的 boost 库中定义的,所以如果我理解正确,在这种情况下没有办法禁用 dllexport? - DreamTool
Boost的一些库(如Thread)只能动态链接,但大多数库不应该自动进行dllimport(更不用说dllexport)操作。 - melak47
1个回答

1

就算不值得一提,你也可以禁用这个块

#if defined(BOOST_HAS_DECLSPEC) && !defined(__COMO__)
# if defined(__BORLANDC__)
# define BOOST_DLLEXPORT __export
# else
# define BOOST_DLLEXPORT __declspec(dllexport)
# endif
#elif ! defined(_WIN32) && ! defined(_WIN64)
# if defined(__MWERKS__)
# define BOOST_DLLEXPORT __declspec(dllexport)
# elif defined(__GNUC__) && (__GNUC__ >= 3)
# define BOOST_USED __attribute__ ((used))
# elif defined(__INTEL_COMPILER) && (BOOST_INTEL_CXX_VERSION >= 800)
# define BOOST_USED __attribute__ ((used))
# endif
#endif

在 Boost 的 serialization/force_include.hpp 中。

参考:http://lists.boost.org/boost-users/2008/06/37175.php


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接