我在VC6和使用wstring生成一个DLL,我想在一个VC9项目中使用它。 在该DLL有较高的电平类操纵wstring,称为UtfString

我在我的项目中正确导入的一切,但是当我打电话:

std::wstring test;
UtfString uTest(test);

也不会相连,即使函数原型是在lib ...

在其它发行者是,当创建一个新的UtfString和调试我的应用程序,新的指针是<Bad Ptr>

我怀疑VC6 wstring和VC9 wstring之间的冲突,但我不知道。我想避免修改原始DLL。

这将是巨大的,如果有人可以使事情对我来说更清晰,并解释我什么是问题的真正原因。

在此先感谢您的回答, 鲍里斯

有帮助吗?

解决方案

甚至不TRY

字符串的布局是不同的

你不能做到这一点。

的字符串类是VC6和VC9之间完全不同。

即使你能够给你链接将最有可能崩溃。

在VC9串具有联合作为用于小弦16字节的缓冲区和用于字符串的指针S.T.尺寸()> 15。 在VC9 wstrings拥有的联盟,这是小弦8 WCHAR缓冲区和字符串的指针S.T.尺寸()> 7

在所有VC6字符串缓冲区空间被分配在堆上。

如果您跨境传递一个字符串必须重新编译DLL。有迹象表明,过于技术来形容这里的其他问题也有关迭代器。

抱歉总得重建

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