2011-11-23 57 views
1

assimp的分配附带一个lib文件夹。此文件夹包含以下子文件夹:如何配置visual studio 2008以根据配置选择正确的.lib?

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

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

+0

如果你去项目属性,每个配置(调试/发布...)有它自己的一套设置。您可以转到各个配置的链接器选项并设置其他库依赖关系。 –

回答

2

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

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

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

+0

如果我将路径添加到项目设置中,则很难共享该项目。我想我应该在我的项目文件夹内复制库和头文件,对吗? – subb

+0

这是处理它的一种方式。您也可以将所有外部库复制到独立位置,然后使用环境变量或.vsprops文件中包含的属性来指定项目设置中的位置。然后任何其他用户只需编辑.vsprops文件/将环境变量设置为外部库的位置即可。 – obmarg

+0

对于.vsprops选项,您可能希望在MSDN上阅读以下内容:http://msdn.microsoft.com/en-us/library/a4xbdz1e%28v=VS.90%29.aspx或部分链接和这个问题的答案:http://stackoverflow.com/questions/2284265/how-to-use-vsprops-file-to-override-vc-directories-in-ms-visual-studio – obmarg

1

您应该使用properties - > linker - > additional include directories来分支每个构建配置的包含路径。这将解决您的问题。

辅助选项是使用#pragma comment(lib,"<lib name>")并使用要链接到的库的路径,然后使用#if/#endif您可以基于当前的构建版本进行分支。

你可以使用依赖walker,进程管理器或任何调试器来测试它。

+0

如果已添加到VC++设置的第一个路径肯定是正确的.lib文件的路径,那么此方法只能正常工作?由于。libs都有相同的文件名,VC++不会只是选择第一个,不管它是否是正确的?或者我低估它的智能 – obmarg

+0

@obmarg:我误解了他的帖子,尽管他编辑了*每build *设置,改变它反映我虽然他做了... – Necrolis

1

你可以使用预处理程序指令做:

#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 
+0

这应该解决调试和发布构建的问题(我没有测试)。我还注意到一些库可以根据C++运行时库是否静态链接来选择它们的lib文件。你知道他们是如何做到的吗?或者在这种情况下可以定义什么宏? – fefe

+1

恐怕我不知道,但一个快速的谷歌把我带到[此mskb文章](http://support.microsoft.com/kb/140584),我不知道这是否会有所帮助。回到主要问题,可以使用_WIN64和_WIN32宏来为VS2008中的x86/x64版本选择正确的lib。 – TVOHM

+0

哦,谢谢。这正是我想要的。 – fefe

相关问题