跨MSVCRT版本分配c++对象



我有VS2010,我需要构建应用程序。我也有。dll与。lib和。h与VS2005构建。这个库依赖于log4cxx.dll(我构建了2010年,下载了2005年的二进制文件)。当我调用库接口方法返回对构建对象的引用时,它抛出AV异常。我不能用另一个版本构建我的应用程序,我已经尝试改变多线程调试我的应用程序类型。

很可能你得到的对象有另一个内存布局。如果你跨越运行时边界传递c++对象,你应该确保接收对象具有相同的布局。例如,如果VS2005编译器重新排序它的字段进行优化,VS2010做了其他方式。或者您使用的类之一(例如std::string)在不同版本之间发生了变化。阅读如何从COM方法返回对象。

在一个运行时中对象分配和在另一个运行时中释放也存在问题…

作为一种解决方案,您可以尝试安装VS2005,但不能保证您最终得到相同的

最新更新