Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/133.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ VisualStudio2010中的外部库_C++_Visual Studio_Linker_Libraries - Fatal编程技术网

C++ VisualStudio2010中的外部库

C++ VisualStudio2010中的外部库,c++,visual-studio,linker,libraries,C++,Visual Studio,Linker,Libraries,我希望在项目中使用一些外部库:libpng和libvorbis。现在,在Linux上,我可以很高兴地构建它们,只要向SCON添加一个配置文件,以便在系统包含路径之外构建额外的include/lib路径 然而,MSVS2010似乎有点挑剔: 我可以将这些库的发布版本的路径添加到用户属性页上的VC++目录中,但这对静态链接不起作用(因为调试版本需要根据调试配置进行链接) 我可以在项目中添加绝对路径,但这意味着项目不可移植 我可以添加libpng目录(例如),然后将Debug\libpng.lib放

我希望在项目中使用一些外部库:libpng和libvorbis。现在,在Linux上,我可以很高兴地构建它们,只要向SCON添加一个配置文件,以便在系统包含路径之外构建额外的include/lib路径

然而,MSVS2010似乎有点挑剔:

  • 我可以将这些库的发布版本的路径添加到用户属性页上的VC++目录中,但这对静态链接不起作用(因为调试版本需要根据调试配置进行链接)
  • 我可以在项目中添加绝对路径,但这意味着项目不可移植
  • 我可以添加libpng目录(例如),然后将
    Debug\libpng.lib
    放在链接器输入中,但它找不到符号。假定它是一条相对路径,因为
    \
我当前的解决方案是将所有必需的库复制到当前项目的解决方案目录中;我甚至可以将它们硬链接到那里,但这似乎很愚蠢

如何保持项目的可移植性,以及每个配置的绝对引用include/lib路径


(例如,能够有意识地将路径放在.suo或.user文件中就太棒了。)

如果要添加库的相对路径,请在它们前面加上“\”以从基本项目目录开始

".\Lib\Debug\libpng.lib"
或“.\”引用父目录

"..\Lib\Debug\libpng.lib"
请注意,如果库位于父目录的父目录中,则可以将“.\”引用链接在一起:

"..\..\Lib\Debug\libpng.lib"

如果要添加库的相对路径,请在它们前面加“\”以从基本项目目录开始

".\Lib\Debug\libpng.lib"
或“.\”引用父目录

"..\Lib\Debug\libpng.lib"
请注意,如果库位于父目录的父目录中,则可以将“.\”引用链接在一起:

"..\..\Lib\Debug\libpng.lib"

我已经使用了相对路径,我想知道如何创建绝对路径,而不是基于每个项目。您可以通过导航到“工具->设置->项目和解决方案->VC++目录”在Visual Studio全局设置中设置绝对库路径。事实证明,对于实现可安装到不同计算机上不同位置的常用SDK的项目来说,这是相当常见的做法。这就是你说的吗?如果是这样的话,我会重新发布作为答案。这是VS2010删除的,它也不允许每个配置目录,因此仍然无法使用静态链接。我已经使用相对路径,我想知道如何使用绝对路径,您可以通过导航到“工具->设置->项目和解决方案->VC++目录”在Visual Studio全局设置中设置绝对库路径,对于实现可安装到不同计算机上不同位置的常用SDK的项目来说,这是相当常见的做法。这就是你说的吗?如果是这样的话,我会重新发布作为答案。这是VS2010删除的,它也不允许每个配置目录,所以仍然无法使用静态链接。