从头文件自动链接静态库

时间:2018-07-10 14:46:44

标签: c++ visual-studio linker static-libraries static-linking

我正在编写一个供内部使用的库,我想自动化静态库(.lib)文件的链接,因此用户不必知道他们需要的所有库。我们使用Visual Studio 2015,所以我已经使用实用程序敲打了一些东西,虽然看起来可行,但我收到很多警告,我认为这是我在做的事。

  

警告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。

1 个答案:

答案 0 :(得分:1)

您可以在项目设置.lib中指定Configuration Properties -> Linker -> Input -> Additional dependencies的路径。您可以为不同的配置和平台指定不同的设置。这样会更清楚。

但是在将函数添加到.lib并在项目中使用它们后,不会出现警告。警告只是说此pragma-lib语句毫无意义,因为没有真正导入任何函数。