从创建DLL VC6时wstring的坏指针或链接问题
-
19-09-2019 - |
题
我在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。有迹象表明,过于技术来形容这里的其他问题也有关迭代器。
抱歉总得重建
不隶属于 StackOverflow