这是正确的链接一个静态的图书馆(.lib)编制与VS2005年与一个程序编制与VS2008年?这两个图书馆和我的程序是用C++编写的.这个程序运行在Windows移动6个专业的模拟器。

这似乎是工作,没有联错误。但是该程序的崩溃期间启动的,因为奇怪的事情发生的内部相联系的图书馆。E.g。lib可以返回的矢量字与的尺寸很大的负数。

有没有这样的问题时,编译程序与VS2005年。

什么是更奇怪的问题只是在使用时释放的配置的建造。当编制采用"调试"配置的问题不会发生。

有帮助吗?

解决方案

VS2005和VS2008使用不同的STL实现。当VS2005代码返回矢,对象具有记忆的布局不同VS2008的期望。那应该是因为打破值你看到返回的日期。

作为一项规则的拇指,你应该始终是所有的编C++的模块的一个项目具有相同编译器和所有设置/#定义相等。

一个特别#定义,原因类似的行为是SECURE_SCL#定义的VS2008.两个模块编制有不同的设置将创建正是你的问题,因为#定义SECURE_SCL引入了更多的成员的变量,为各种C++库课程。

其他提示

这不是不正确的,链接至较旧的库在你的方式描述,但这并不让我惊讶你看到一些奇怪的行为。几个理智的检查:

  • 都是这两个文件使用的 同的版本同样的运行时间图书馆?
  • 是你的.可执行软件应用程序"看到"同一标题的文件。LIB是建立反对?确保_WIN32_WINNT(等等)。 宏是 声明正确.

而当你说。LIB,你的意思是一个真正的静态图书馆(mylib.lib)或一个进图书馆DLL(mylib.lib->mylib.dll)?

什么是在编译/链路设置VS2008可执行的项目?

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