我正在尝试维护一个 5 年前用 VC++ 6.0 编写的程序。它使用我们的“通用”库。我遇到的问题是,它要么链接到这些库的调试版本,要么链接到发布版本,这取决于我是否将 [库文件] 的 [目录] 设置为 [工具]->[选项]。
如何在构建调试版本时链接到 [common\debug\common.lib],在构建发布版本时链接到 [common\release\common.lib]?如果我在库目录中有两个路径,它似乎链接到它找到的第一个。
我正在尝试维护一个 5 年前用 VC++ 6.0 编写的程序。它使用我们的“通用”库。我遇到的问题是,它要么链接到这些库的调试版本,要么链接到发布版本,这取决于我是否将 [库文件] 的 [目录] 设置为 [工具]->[选项]。
如何在构建调试版本时链接到 [common\debug\common.lib],在构建发布版本时链接到 [common\release\common.lib]?如果我在库目录中有两个路径,它似乎链接到它找到的第一个。
而不是指定包含文件夹中的路径,我用来根据配置包含库的所有最佳方法是使用#pragma
试试这个,非常有用
#ifdef _DEBUG
#pragma comment(lib, "..\\DllTest\\Debug\\DllTest.lib")
#else
#pragma comment(lib, "..\\DllTest\\Release\\DllTest.lib")
#endif
在 [Project Properties]->[Linker]->[Input]->[Additional Dependencies] 中,您可以使用 $(ConfigurationName) 占位符,如下所示:
c:\common\$(ConfigurationName)\common.lib
在调试配置中,这将更改为:
c:\common\Debug\common.lib
在 Release 中,它将更改为:
c:\common\Release\common.lib
如果我在库目录中有两个路径,它似乎链接到它找到的第一个。
只需添加调试设置的调试文件夹和发布设置的发布文件夹。
几乎所有编译器、链接等设置都是每个配置(如果调试和发布不同,项目属性将在“所有配置”中显示设置为空白(如果我记得正确的文本)。
您可以在 Additional Dependancies 字段中指定要链接到的库的完整路径,这对于调试和发布版本可以有不同的值。
我找到的解决方案有点像理查德和“1800 信息”的......
我从Tools->Options
. 这里的路径对于在 MSVS VC++ 6.0 中运行的所有项目的所有配置都是全局的。
Project->Settings
然后,我为每个配置添加了相应库的完整路径。因此调试配置有D:\VSS\Common\Debug\Common.lib
,发布配置有D:\VSS\Common\Release\Common.lib
。这似乎有效,而且我第一次没有构建警告!
感谢所有为我指明正确方向的建议。
--- 阿利斯泰尔。