如果您要求以任何其他方式将 2008 和 2010 库组合到一个可执行文件中,而不是将 2010 部分移到 DLL 中,那么答案可能是“没有其他简单的方法可以实现这一目标”。
但是,如果您不想“VC++ 2010 运行时库...在 VS 2008 下”(即在旧 2008 IDE 中针对 2010 库构建),而是“在 2008 年编译的程序中使用 2010 年编译的 DLL” ,这是完全可能的。
正如我们在项目中所做的那样,最简单的方法是针对静态链接的标准库(MFC,如果您使用它)构建(.exe 和 DLL),然后LoadLibrary
在您的 .exe 中使用以加载 DLL。在 DLL 中,您可以导出 ( _declspec (dllexport)
) 一个函数(最好在extern "C" {}
守卫内部)并在 .exe 中使用它GetProcAddress
。
静态链接和显式加载使您免于因不同运行时导致的许多不一致错误。
如果您担心 DLL 加载和函数调用成本,您可以尝试使这些调用尽可能少(可能不仅将算法,而且将一些更高级的逻辑移动到 DLL 中)。也看到这个 issie。
您可以使用本机多目标在一个 IDE (2010) 中构建所有代码(但是您仍然需要分别针对 v9 和 v10 库分别构建主应用程序和 DLL)。