Domanda

Ho una DLL generato su VC6 e l'utilizzo di wstring, e sto cercando di usarla in un progetto VC9. In questa DLL v'è un livello più alto di classe manipolazione wstring, chiamato UtfString.

Ho ottenuto tutto importato correttamente nel mio progetto, ma quando chiamo:

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

non collegherà, anche se il prototipo di funzione è nella lib ...

L'altra emittente è che quando creare un nuovo UtfString, ed eseguire il debug la mia app, il nuovo puntatore è <Bad Ptr>.

ho il sospetto di un conflitto tra VC6 wstring e VC9 wstring, ma non sono sicuro. Voglio evitare di modificare la DLL originale.

Sarebbe bello se qualcuno potesse rendere le cose più chiare per me, e mi spiega qual è il vero motivo del problema.

Grazie in anticipo per la risposta, Boris

È stato utile?

Soluzione

NON anche provare

i layout stringa sono diversi

Non è possibile farlo.

La classe stringa è completamente diversa tra il VC6 e VC9.

Anche se sono stati in grado di collegare si andrà in crash più probabile.

In stringhe VC9 hanno un sindacato che è di 16 byte di buffer per i piccoli archi e un puntatore per la stringa S.T. size ()> 15. In VC9 wstrings hanno un sindacato che è 8 tampone wchar per i piccoli archi e un puntatore per la stringa S.T. size ()> 7.

in VC6 tutto lo spazio del buffer stringa viene allocato sul mucchio.

è necessario ricompilare la DLL se si passano le stringhe attraverso il confine. Ci sono altre questioni anche per quanto riguarda gli iteratori che sono troppo tecnico per descrivere qui.

devo dispiace ricostruire

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top