Bad pointeur ou un problème de lien lors de la création wstring de dll VC6
-
19-09-2019 - |
Question
Je suis une DLL générée sur VC6 et en utilisant wstring
, et je suis en train de l'utiliser dans un projet VC9.
Dans cette DLL il y a un niveau plus élevé wstring
de manipulation de classe, appelée UtfString
.
Je suis tout correctement importé dans mon projet, mais quand je l'appelle:
std::wstring test;
UtfString uTest(test);
il ne sera pas un lien, même si le prototype de la fonction est dans le répertoire lib ...
L'autre émetteur est que lorsque créer un nouveau UtfString et déboguer mon application, le nouveau pointeur est <Bad Ptr>
.
Je soupçonne un conflit entre VC6 wstring
et VC9 wstring
mais je ne suis pas sûr. Je veux éviter de modifier le dll d'origine.
Il serait bien si quelqu'un pouvait faire les choses plus claires pour moi, et expliquez-moi quelle est la raison réelle du problème.
Merci d'avance pour votre réponse, Boris
La solution
ESSAYER MEME NE
les mises en page de chaîne sont différentes
vous ne pouvez pas le faire.
La classe de chaîne est tout à fait différente entre VC6 et VC9.
Même si vous étiez en mesure de vous lien accident le plus probable.
Dans les chaînes de VC9 ont une union qui est tampon de 16 octets pour les petites chaînes et un pointeur pour une chaîne S.T. size ()> 15. En VC9 wstrings ont une union qui est 8 tampon wchar pour les petites chaînes et un pointeur pour une chaîne S.T. size ()> 7.
en VC6 tout l'espace de mémoire tampon de chaîne est allouée sur le tas.
Vous devez recompiler la DLL si vous passez des chaînes à travers la frontière. Il y a aussi d'autres questions concernant les itérateurs qui sont trop techniques pour décrire ici.
désolé dois reconstruire