【发布时间】:2014-02-26 12:55:57
【问题描述】:
我正在处理一个包含四组本机 C++ VS2013 项目的大型代码库。我将这些集合称为 A、B、C 和 D。
集合 A 和 B 中的项目生成 C++ 静态库 (.lib)。集合 C 和 D 中的项目生成 DLL 和可执行文件。
集合 C 中的项目仅链接到集合 A 中的静态库,而集合 D 中的项目链接到来自集合 A 和集合 B 的静态库:
C (.dll, .exe) ----> A (.lib)
^
|
|
D (.dll, .exe) -----> B (.lib)
我有以下要求:
- 集合 C 中的项目生成的那些 DLL 和 EXE必须在 Windows XP 和 Windows 7 上运行;
- 另一方面,那些由 D 组中的项目生成的 DLL 和 EXE, 不需要在 Windows XP 上运行。
我想做的是使用v120_xp 平台工具集构建集合A 和C 中的项目,以及使用v120 平台工具集构建集合B 和D 中的项目:
(WinXP, Win7)
C [v120_xp] ----> A [v120_xp]
^
|
|
D [v120] -----> B [v120]
(Win7 only)
I believe this should not be a problem for projects in set C,但我关心的是 D 组中的项目。
我尝试为几个小项目执行上述操作,似乎一切正常,但是这在一般情况下是否保证安全?
我的研究:
this question 中的第 2 点)问的问题与我问的几乎相同,但针对 VS2012。它没有收到答案。
This answer(同样,对于 VS2012)提到:
长话短说,混合使用 v110 和 v110_xp 工具集构建的模块不是问题。
另一方面,This other answer to the same question 说:
官方不支持混合 v110_xp 可执行文件和 v110 库。
【问题讨论】:
标签: c++ linker windows-xp visual-studio-2013 static-libraries