2010-12-30 5 views
1

私はいくつかのIDA擬似C++のコードを持っていると私はそれがあったどれだけ近いかと思いまして...MFCの.dll、CStringの問題、IDAのC++擬似コード、それはどれくらい近いですか?

ライン:

CHAR Filename; // [sp+26Ch] [bp-110h]@1 
char v31; // [sp+36Ch] [bp-10h]@1 
int v32; // [sp+378h] [bp-4h]@1 

GetModuleFileNameA(0, &Filename, 0x100u); 
CString__CString(&v31, &Filename); 
v32 = 0; 
CString::MakeLower(&v31); 
if (CString__Find(&v31, "notepad") != -1) 
... 

逆コンパイルの.dllがCStringのを使用しているので、私はそれがMFC基づいていることを前提としていますdll。私は、CStringがすぐに利用できるというドキュメントを読んでいると思った。しかし、エラー1エラーC2665: 'ATL :: CStringT :: CStringT':17オーバーロードのどれもがすべての引数タイプを変換できませんでしたか?

また、MakeLowerとFindで同様のエラーが発生します。これは標準のCString関数なので、どこが間違っていますか?

また、非mfcベースの.dllのCStringクラスをteh #includeヘッダーで使用できるはずですが、同じエラー1エラーが発生します。C2039: 'CString':のメンバーではありません'ATL :: CStringT'もう一度私はそれをどのように使うのですか?

ありがとうございました。

+0

1. C2665を生成するコードのスニペットと、正確なエラーメッセージ(特に、それが不平を言う引数型は何か)を投稿してください。 2. C2039を生成するコードを投稿します。 – atzz

答えて

1

hexraysは、オブジェクトを持つC++よりもCのようなコードを生成します。 したがって、すべての 'this'ポインタは明示的に渡されます。

これをクリアするには、おそらくv31のタイプをCStringに変更する必要があります。

私はコンパイラがCString__CString(<>、FileName)がコンストラクタであることを理解できないと思います。

ので、あなたはそれを自分で変更する必要があります。

のCString V31(ファイル名);

関連する問題