#pragma comment(lib)的相对路径

Mar*_*tin 10 c++ linker pragma visual-studio-2010

使用Visual Studio 2010,我想在#pragma comment(lib)中指定相对于包含它的cpp文件的路径.

我试过了

#pragma comment(lib, __FILE__"\\..\\foo.lib")
Run Code Online (Sandbox Code Playgroud)

在foo.cpp,它似乎工作.但是,这对我来说似乎很骇人听闻.

是否有一种不那么强硬的方式?

Han*_*ant 9

不,如果这需要来自.cpp文件,请不要这样做.这是非常不寻常的,您通常无法保证.lib部署在与使用该库的客户端源代码相关的目录中.虽然你当然可以给出规定这个的安装说明.

通常的方法是只指定"foo.lib"并将链接器配置为使用Additional Library Directories设置在.lib文件的正确目录中搜索.这允许.lib在任何地方部署,但库用户在设置项目时必须更新设置.否则这是一个非常正常的配置任务.与在Additional Dependencies设置中指定库没有太大区别.

请记住,#pragma通常对帮助客户端程序员使用正确版本的静态链接库最有用.您通常必须提供静态.lib,调试与发布和/ MT vs/MD的4个版本.可能乘以您愿意支持的VS版本的数量.这可能会很匆忙._DLL,_DEBUG和_MSC_VER预定义宏可帮助您生成正确的#pragma.