【发布时间】:2018-12-18 11:25:55
【问题描述】:
我正在编写一个供内部使用的库,并且我想自动链接静态库 (.lib) 文件,这样用户就不必知道他们需要的所有库。我们使用 Visual Studio 2015,所以我使用 pragma 解决了一些问题,这似乎有效,但我收到很多警告或警告,我认为这是由我正在做的事情引起的。
警告 LNK4221 此对象文件未定义任何先前 未定义的公共符号,因此它不会被任何链接操作使用 使用这个库
我将此代码包含在所有面向公众的接口头文件中,并将其扩展为包含必要的内部和外部库。
#ifndef GFXK_LIBS_NET_IMPORT__
#define GFXK_LIBS_NET_IMPORT__
#ifdef _DEBUG
#ifdef WIN32
#pragma comment( lib, "gfxk_net_Debug_Win32-v140.lib" )
#else
#pragma comment( lib, "gfxk_net_Debug_x64-v140.lib" )
#endif
#else
#ifdef WIN32
#pragma comment( lib, "gfxk_net_Release_Win32-v140" )
#else
#pragma comment( lib, "gfxk_net_Release_x64-v140" )
#endif
#endif /*_DEBUG*/
#endif /*GFXK_LIBS_NET_IMPORT__*/
我的问题是我如何才能很好地做到这一点,以便我可以删除这个黑客工作。我正在寻找类似于 Boost 通过自动链接所做的事情,我不知道如何做到这一点。我不太担心跨平台,因为目前库仅针对 Windows。
【问题讨论】:
-
这并没有解决问题,但包含两个连续下划线 (
__GFXK_LIBS_NET_IMPORT__) 的名称和以下划线后跟大写字母的名称保留供实现使用。不要在你的代码中使用它们。 -
哎呀,我不是故意的
标签: c++ visual-studio linker static-libraries static-linking