它是能够使用C++的静态图书馆(.lib)编制使用Visual Studio6Visual Studio2008年?

有帮助吗?

解决方案

我不应该想为什么不 - 只要你保持平时的CRT内存边界(也就是说,如果你的库函数内部分配内存,总是从库中无它 - 通过在lib做调用函数释放)。

这种方式工作得很好与各种编译器编译的DLL,静态链接库应该没问题了。

其他提示

这实际上取决于。是否LIB只暴露“的extern‘C’”,其中存储器是由直的Win32方法(CoTaskMemAlloc等)进行管理或来电从不释放内存由被叫方或分配反之亦然功能?你只能靠既然VS 6并没有多大改变基本库?如果是这样,你应该罚款。

有2个基本的看点。全局变量的更改由第三方库使用,并改变结构,类等等的那些第三方库中定义的结构。例如,CRT内存分配器可能已经改变了它的隐性分配管理结构中的2个版本之间,所以具有的库的一个版本分配一块存储器,并具有另一个自由它可能会导致崩溃。

作为另一实例,如果通过接口暴露C ++类和它们依赖于像MFC MS运行时库,有一个机会,类布局VS 6和VS 2008之间改变这意味着,在访问构件/场这个类可以去错误的东西,并导致不可预知的结果。如果.LIB以任何名义使用MFC你可能会大清洗。 MFC定义和内部使用全局吨,而如果MFC基础设施的托管环境(因为VS 6已经发生了很大变化,BTW)已经改变由.LIB操作,以MFC全局的任何访问可能导致失败。

我不完全探索什么样的变化在MFC头被做了,但我已经看到了不同的编译版本VS MFC / ATL基础类的二进制文件之间不可预知的行为。

在这些问题上面,有像的strtok()依赖于运行时库定义的静态全局变量函数的风险。我不知道,但我担心那些静态变量可能,如果你使用客户端期望上的多线程CRT创建的线程单线程CRT没有得到正确初始化。看为_beginthread()的文档的详细信息。

是。应该有与此没有任何问题的。由于 gbjbaanb 提到的,你需要介意你的记忆,但VS2008仍然会使用它。只要你是不是想混CLR,(管理)的代码与它。我建议不要,如果在所有可能的。但是,如果你正在谈论生C或C ++代码,当然,它会工作。

你到底是打算用什么? (什么是这个库?)你已经尝试过了,但都是有问题,或者你浪费了很多时间试图让一些工作,只是惯于之前你只是检查?

当然它会工作。

您在VS2008问在哪里代码的引用?

如果是这样,去凸出的道具 - >链接器 - >输入在属性页上配置属性。查找“额外的依赖性”,并有编码该.LIB。

转到PROJ道具 - >链接 - >常规和代码中的“附加库目录”的库路径

这应该这样做!!

有例,答案是否定的,当我们从VS6到VS2k5感动,我们必须重建我们的所有库,内存模式发生了变化,而CRT的功能,不同的。

有一些裂变化之间的VC6,VS2003,VS2005和VS2008.视觉C++(在VS2005)停止支持单线,静态相联系CRT图书馆。一些重大更改所列举的 在这里,在这里,.这些变化将影响利用VC6建libs在以后的版本。

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