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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top