【发布时间】:2013-03-14 12:35:09
【问题描述】:
我有 VS2010,我需要构建应用程序。 我也有 .dll 与 .lib 和 .h 用 VS2005 构建。 该库依赖于 log4cxx.dll(我构建了 2010 并下载了 2005 二进制文件)。 当我调用返回对构建对象的引用的库接口方法时,它会抛出 AV 异常。我无法使用其他版本构建我的应用,并且我已经尝试更改为多线程调试我的应用类型。
【问题讨论】:
标签: c++ static-linking msvcrt
我有 VS2010,我需要构建应用程序。 我也有 .dll 与 .lib 和 .h 用 VS2005 构建。 该库依赖于 log4cxx.dll(我构建了 2010 并下载了 2005 二进制文件)。 当我调用返回对构建对象的引用的库接口方法时,它会抛出 AV 异常。我无法使用其他版本构建我的应用,并且我已经尝试更改为多线程调试我的应用类型。
【问题讨论】:
标签: c++ static-linking msvcrt
你得到的对象很可能有另一个内存布局。 如果您跨运行时边界传递 c++ 对象,您应该确保接收对象具有相同的布局。例如,如果 VS2005 编译器已对其字段重新排序以进行优化,而 VS2010 则以其他方式完成。或者您使用的类之一(例如 std::string)在版本之间发生了变化。了解如何从 COM 方法返回对象。
一个运行时中的对象分配和另一个运行时中的释放也存在问题......
作为一种解决方案,您可以尝试安装 VS2005,但不能保证最终结果相同
【讨论】: