2009-07-24 45 views
0

我得到了一個在VC6上生成的DLL,使用wstring,我試圖在VC9項目中使用它。 在這個DLL中有一個更高級的類操作wstring,被稱爲UtfString當從vc6創建wstring時,指針或鏈接不良問題

我把一切都在我的項目正確導入,但是當我打電話:

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

它不會鏈接,即使該函數的原型是在lib ...

其他發行當創建一個新的UtfString並調試我的應用程序時,新指針是<Bad Ptr>

我懷疑VC6 wstring和VC9 wstring之間有衝突,但我不確定。我想避免修改原始的Dll。

如果有人能夠讓我的事情變得更加清晰,並且解釋我問題的真正原因是什麼,那將是非常棒的。

預先感謝您的回答, 鮑里斯

+0

我期望鏈接到不同運行時的dll幾乎不兼容是。什麼是錯誤?什麼指針? – Eugene 2009-07-24 02:33:58

+0

另外,請檢查您的「將wchar_t視爲內置類型」設置。 – Eugene 2009-07-24 02:34:55

回答

2

DONT甚至嘗試

字符串佈局不同

你不能做到這一點。

字符串類在VC6和VC9之間完全不同。

即使你能夠鏈接你很可能會崩潰。

在VC9字符串中有一個聯合,它是16字節的小字符串緩衝區和一個字符串s.t.的指針。尺寸()> 15。 在VC9中,wstrings具有8個用於小字符串的wchar緩衝區和用於字符串s.t的指針的聯合。尺寸()> 7。

在VC6中,所有字符串緩衝區空間都分配在堆上。

如果跨越邊界傳遞字符串,則必須重新編譯該DLL。關於迭代器的其他問題也太過技術性,無法在此處描述。

對不起,我得重建