我有C和Fortran例程的静态链接库编译和使用Visual Studio 2002 C(V7.0)编译器和英特尔Fortran 9.0.018编译器链接在一起。

在我的库调用和链接到Microsoft C运行时(MSCRT)2002年静态库(单线程)C代码。相信2002 CRT库的实际版本号为V7.0

我将把这个静态库为“vs2002if9.lib”

我可以静态链接到我的“vs2002if9.lib”安全使用Visual Studio(2003年,2005年或2008年)的任何更高版本,而有关的调用程序的行为有关C运行时调用任何后顾之忧?

或者,我通过混合CRT静态库的版本创建的问题?

如果我提供我的“vs2002if9.lib”给第三方软件开发者怎么办?什么要求我在强加在他们身上?

有帮助吗?

解决方案

混合使用C运行时并没有在过去为我工作。其中我可以看到这个工作的唯一方式{}也许是,如果你完全静态链接的C运行时[没有通过参数跨越边界但当时价值是什么你vs2009if9境内隔离使用堆栈/堆的.lib提供]。

作为一个例子,如果要被分配指针[堆存储器]在应用中和通过这个指针到您提供的库,它堆管理器应使用?正确的答案是堆管理器管理指针,但你的库不会知道其他堆管理器。如果你的库应用程序使用分配内存,它的应用程序负责免费它变得丑陋/删除使用所提供的指针(糟糕的设计肯定的,但仍然是可能的)。再次,错误的堆管理器将被利用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top