2010-06-28 99 views
2

我從來沒有發佈過,所以我很抱歉,如果我不清楚。我試圖在2005年使用C++編寫的第三方DLL,我所擁有的只是一些非常差的文檔。我動態鏈接到DLL並使用從Dependency walker中讀取的Ordinal值來獲取指向DLL中某個方法的指針。如(LPFNDDLLZC)GetProcAddress(hHILCdll,(LPCSTR)15);我的代碼是用Microsoft VS 6.0編譯的C++編寫的,我不能打開UNICODE定義,或者我會打破現有的代碼。pwsz字符串混淆

DLL的文檔說所有字符串參數都是pwsz,我相信這意味着指向寬字符串的指針null終止。

我曾嘗試傳遞一個指向無符號短BSTR和其他各種東西的DLL,並在字符串上崩潰的DLL。我完全失去了爲什麼,我相信它與我的pwsz字符串結構有關,並且我失去了如何解決這個問題。我已閱讀可能有關文章,但沒有任何作品。

任何人都可以幫忙嗎?如果需要,我可以發佈代碼。

謝謝。

+0

記錄LPFNDDLLZC聲明。 – 2010-06-28 21:01:22

+0

我不會說匈牙利符號,那麼什麼是「pwsz」?另外,什麼是「LPFNDDLLZC」? – 2010-06-28 21:18:19

+0

typedef long(__stdcall * LPFNDDLLZC)(long x,long y,long long z, long a,long b,long long c, long d,unsigned short * pwszmsg); LPFNDDLLZC只是我在DLL中的方法的指針名稱。 我不喜歡匈牙利符號,我以爲開發人員很久以前就停止使用它了。無論如何,他們在這裏告訴我,它的一個指向寬字符串的指針終止。 該DLL附帶沒有頭文件或.def文件,因此我將介紹我用於方法簽名的小文檔。 – 2010-06-29 12:23:24

回答

2

你可以用MultiByteToWideChar把你的LPSTR變成一個LPWSTR來解決你的問題。

+0

謝謝,但我試過,得到了同樣的結果。 – 2010-06-28 21:03:25

0

感謝大家。我終於得到了DLL源代碼的副本,而我的問題不是我的字符串構造,而是糟糕的文檔。原來他們使用雙指針,修復了很多東西!