Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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++ 如何配置visual studio 2008以根据配置选择正确的.lib?_C++_Visual Studio 2008 - Fatal编程技术网

C++ 如何配置visual studio 2008以根据配置选择正确的.lib?

C++ 如何配置visual studio 2008以根据配置选择正确的.lib?,c++,visual-studio-2008,C++,Visual Studio 2008,的发行版附带一个lib文件夹。此文件夹包含以下子文件夹: assimp_debug-dll_win32 assimp_debug-dll_x64 assimp_release-dll_win32 assimp_release-dll_x64 每个文件夹都有一个文件assimp.lib。如何根据配置(调试/发布)包含正确的库?目前,assimp位于我的项目之外的文件夹中,我已经添加了指向工具->选项->VC++目录->库文件的路径,但我不确定它是否工作。您应该将库目录添加到项目本身,而不是在vi

的发行版附带一个lib文件夹。此文件夹包含以下子文件夹:

assimp_debug-dll_win32
assimp_debug-dll_x64
assimp_release-dll_win32
assimp_release-dll_x64

每个文件夹都有一个文件assimp.lib。如何根据配置(调试/发布)包含正确的库?目前,assimp位于我的项目之外的文件夹中,我已经添加了指向工具->选项->VC++目录->库文件的路径,但我不确定它是否工作。

您应该将库目录添加到项目本身,而不是在visual studio中作为全局设置

为此,可以在解决方案资源管理器中右键单击该项目。然后在VC++目录部分下,添加正确的路径到assimp。您只需将与当前(即调试或发布/win32或x64)设置相对应的路径添加到此列表中。顶部应该有一个下拉列表来选择您正在编辑的当前配置


这适用于VS2010无论如何,我不是100%确定VS2008。如果VC++目录部分不存在,库路径可能位于项目设置->链接器->常规->附加库目录下。

您应该将库目录添加到项目本身,而不是作为visual studio中的全局设置

为此,可以在解决方案资源管理器中右键单击该项目。然后在VC++目录部分下,添加正确的路径到assimp。您只需将与当前(即调试或发布/win32或x64)设置相对应的路径添加到此列表中。顶部应该有一个下拉列表来选择您正在编辑的当前配置


这适用于VS2010无论如何,我不是100%确定VS2008。如果VC++目录部分不存在,库路径可能位于项目设置->链接器->常规->附加库目录下。

您应该使用属性->链接器->附加包含目录为每个生成配置分支包含路径。这会解决你的问题

第二个选项是使用
#pragma comment(lib,“”
并使用要链接到的库的路径,然后使用
#if/#endif
可以基于当前构建版本进行分支


您可以使用dependency walker、process explorer或任何调试器对其进行测试。

您应该使用属性->链接器->其他包含目录对每个生成配置的包含路径进行分支。这会解决你的问题

第二个选项是使用
#pragma comment(lib,“”
并使用要链接到的库的路径,然后使用
#if/#endif
可以基于当前构建版本进行分支


您可以使用dependency walker、process explorer或任何调试器进行测试。

您可以使用预处理器指令进行测试:

#ifdef __DEBUG
#pragma comment(lib,"c:/Path/assimp_debug-dll_win32/assimp.lib")
#else
#pragma comment(lib,"c:/Path/assimp_release-dll_win32/assimp.lib")
#endif

可以使用预处理器指令执行此操作:

#ifdef __DEBUG
#pragma comment(lib,"c:/Path/assimp_debug-dll_win32/assimp.lib")
#else
#pragma comment(lib,"c:/Path/assimp_release-dll_win32/assimp.lib")
#endif


如果转到“项目属性”,则每个配置(调试/发布…)都有自己的设置集。您可以转到各个配置的链接器选项并设置其他库依赖项。如果转到项目属性,则每个配置(调试/发布…)都有自己的设置集。您可以转到各个配置的链接器选项并设置其他库依赖项。只有当添加到VC++设置的第一个路径是正确的.lib文件的路径时,此方法才能正常工作?由于.libs都有相同的文件名,VC++是否会选择它遇到的第一个文件名,而不管它是否正确?还是我低估了它的价值inteligence@obmarg:我误读了他的帖子,尽管他编辑了每个构建设置,并将其更改以反映我对他的看法…只有当添加到VC++设置的第一个路径是正确的.lib文件的路径时,此方法才能正常工作?由于.libs都有相同的文件名,VC++是否会选择它遇到的第一个文件名,而不管它是否正确?还是我低估了它的价值inteligence@obmarg:我误读了他的帖子,虽然他编辑了每个构建的设置,更改了它以反映我对他的看法…这应该可以解决调试和发布构建的问题(我没有测试)。我还注意到一些库可以根据C++运行时库是否是静态链接来选择它们的LIB文件。你知道他们是怎么做到的吗?或者在这种情况下可以定义什么宏?恐怕我不知道,但谷歌很快就把我带到了,我不确定这是否会有帮助。回到主要问题,可以使用_WIN64和_WIN32宏为VS2008中的x86/x64版本选择正确的库。这应该可以解决调试和发布版本的问题(我没有测试)。我还注意到一些库可以根据C++运行时库是否是静态链接来选择它们的LIB文件。你知道他们是怎么做到的吗?或者在这种情况下可以定义什么宏?恐怕我不知道,但谷歌很快就把我带到了,我不确定这是否会有帮助。还回到主要问题_WIN64和_WIN32宏可用于为VS2008中的x86/x64版本选择正确的库。如果将路径添加到项目设置中,则很难共享项目。我想我应该把libs和header复制到我的项目文件夹中,对吗?这是一种处理方法。也可以将所有外部库复制到单独的位置,然后使用环境变量或.vsprops文件中包含的属性在项目设置中指定位置。然后,任何其他用户只需编辑.vsprops文件/将环境变量设置为其外部库的位置。对于.vsprops选项,您可能希望在MSDN:或此问题的某些链接和答案上阅读此内容:我也考虑过此问题。在某些情况下,一种或另一种被认为是最佳实践还是更合适?我不确定我是否最适合回答这个问题