我想知道,是否调用放置在.dll中的代码,使用不同的工具链构建该代码?并且正在使用一个.lib文件与一个较旧的编译器一起构建一个更新的代码。使用不同编译器的版本构建的混合二进制文件
我知道,第二个是不可取的,但我想知道,这是不可能的。
正是我的情况是这样的:
我a.exe
文件使用b.lib
文件,该文件也与VC7.1内置VC7.1建。 a.exe
来自c.dll
的调用代码也是使用b.dll
构建的。现在我想写一个新的c.dll
,但用VC9编译它。 (我想这样做,因为我需要一些不支持使用VC7.1构建它们的库。) - 我的c.dll
也需要b.lib
,我仍然有它的来源,因此我可以重新编译它。
那么,是否有可能使其工作?如果不是,你能提供一个简短的解释,究竟是什么不允许这样做?
一个大问题是你会得到一个不同的CRT,这意味着你得到一个不同的堆。这会导致解除分配问题。 – drescherjm