将使用VS 2005编译的静态库(.lib)与使用VS 2008编译的程序链接是否正确?库和我的程序都是用C++编写的.此程序在Windows Mobile 6 Professional模拟器上运行.
这似乎工作,没有链接错误.但是程序在启动期间崩溃,因为链接库中发生了奇怪的事情.例如,lib可以返回大负数的字符向量.
使用VS 2005编译程序时没有这样的问题.
更奇怪的是,问题仅在于为构建使用发布配置时.使用调试配置进行编译时,不会发生此问题.
VS2005和VS2008使用不同的STL实现.当VS2005代码返回向量时,该对象的内存布局与VS2008预期的不同.这应该是您在返回日期中看到的值损坏的原因.
根据经验,您应该始终使用相同的编译器编译项目的所有C++模块,并且所有设置/ #define equal.
导致类似行为的一个特定#define是VS2008的SECURE_SCL #define.使用不同设置编译的两个模块将准确创建您的问题,因为#defining SECURE_SCL将更多成员变量引入各种C++库类.