在我的 VS2012 中,我有 4 个可用的工具集:v90、v100、v110 和 v110_xp。我用两个项目 testlib(一个静态库)和 testexe(控制台应用程序)做了一个简单的测试。接口只是一个带有签名的函数void test()
。结果:
- testlib(v90), testexe(v90 以外的任何东西) -> 不链接
- testlib(v100), testexe(v110 or v110_xp) -> 链接
然而,我觉得 v100 和 v110 会链接起来有点奇怪,所以我试图让场景复杂一点。现在我的方法看起来像这样std::map<std::string, std::string> test(const std::string& arg)
:正如预期的那样,testlib(v100) 和 testexe(v110) 没有链接 ( mismatch detected for '_MSC_VER'
)。
但是 testlib(v110) 和 testexe(v110_xp) 仍然可以链接,并且生成的 exe 可以在 Windows XP 上运行。这只是偶然还是这是受支持的情况?如果这只是偶然,那么欢迎使用仅使用 v110_xp 中提供的功能并破坏这种兼容性的示例代码。我想知道是否应该将我的库的两个版本部署到我的客户,或者只使用 v110 编译的版本。