我正在编写一个供内部使用的库,我想自动化静态库(.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。
答案 0 :(得分:1)
您可以在项目设置.lib
中指定Configuration Properties -> Linker -> Input -> Additional dependencies
的路径。您可以为不同的配置和平台指定不同的设置。这样会更清楚。
但是在将函数添加到.lib并在项目中使用它们后,不会出现警告。警告只是说此pragma-lib语句毫无意义,因为没有真正导入任何函数。