自动 link 来自头文件的静态库
Auto link static libraries from header file
我正在编写供内部使用的库,我想自动链接静态库 (.lib) 文件,这样用户就不必知道他们需要的所有库。我们使用 Visual Studio 2015,所以我使用 pragma 搞砸了一些东西,这似乎有效,但我收到了很多警告,我认为这是由我正在做的事情引起的。
Warning LNK4221 This object file does not define any previously
undefined public symbols, so it will not be used by any link operation
that consumes this library
我将此代码包含在所有 public 面向接口的头文件中,并将其扩展为包含必要的内部和外部库。
#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__*/
我的问题是如何才能很好地完成此操作,以便我可以删除此 hack 作业。我正在寻找类似于 Boost 使用自动链接所做的事情,但我找不到如何执行此操作。我不太担心跨平台,因为此时库目标只有 Windows。
您可以在项目设置 Configuration Properties -> Linker -> Input -> Additional dependencies
中指定 .lib
s 路径。您可以为不同的配置和平台指定不同的设置。这样会更清晰。
但是在您将函数添加到您的.lib 并在您的项目中使用它们之后,警告将不会出现。警告只是说这个 pragma-lib 语句毫无意义,因为没有真正导入函数。
我正在编写供内部使用的库,我想自动链接静态库 (.lib) 文件,这样用户就不必知道他们需要的所有库。我们使用 Visual Studio 2015,所以我使用 pragma 搞砸了一些东西,这似乎有效,但我收到了很多警告,我认为这是由我正在做的事情引起的。
Warning LNK4221 This object file does not define any previously undefined public symbols, so it will not be used by any link operation that consumes this library
我将此代码包含在所有 public 面向接口的头文件中,并将其扩展为包含必要的内部和外部库。
#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__*/
我的问题是如何才能很好地完成此操作,以便我可以删除此 hack 作业。我正在寻找类似于 Boost 使用自动链接所做的事情,但我找不到如何执行此操作。我不太担心跨平台,因为此时库目标只有 Windows。
您可以在项目设置 Configuration Properties -> Linker -> Input -> Additional dependencies
中指定 .lib
s 路径。您可以为不同的配置和平台指定不同的设置。这样会更清晰。
但是在您将函数添加到您的.lib 并在您的项目中使用它们之后,警告将不会出现。警告只是说这个 pragma-lib 语句毫无意义,因为没有真正导入函数。