InetSpySrc & VC6No.00404
横取り太郎 さん 03/01/16 17:00
 
はじめまして。

横取り丸を使用しているのですが、
InetSpy を VC6 にてビルドして使用すると、
コンパイルは通るのですが以下のようなエラーが出ます。

リンク中...
   ライブラリ Debug/InetSpy.lib とオブジェクト Debug/InetSpy.exp を作成中
DllMain.obj : error LNK2001: 外部シンボル ""void __cdecl YdmSetModuleData(void
*,struct HWND__ *,unsigned long)" (?YdmSetModuleData@@YAXPAXPAUHWND__@@K@Z)"
 は未解決です
DllMain.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl YdmGetModuleD
ata(void *,struct HWND__ *)" (?YdmGetModuleData@@YAKPAXPAUHWND__@@@Z)" は未
解決です
Debug/InetSpy.dll : fatal error LNK1120: 外部参照 2 が未解決です。
link.exe の実行エラー

InetSpy.dll - エラー 3、警告 0

以前にこのような投稿がありましたが、どのように対処すればよろしいでしょうか?

[ ]
RE:00404 InetSpySrc & VC6No.00405
アルビレオ さん 03/01/16 20:20
 
アルビレオです。

>コンパイルは通るのですが以下のようなエラーが出ます。
>
>DllMain.obj : error LNK2001: 外部シンボル ""void __cdecl YdmSetModuleData(void
> *,struct HWND__ *,unsigned long)" (?YdmSetModuleData@@YAXPAXPAUHWND__@@K@
>Z)" は未解決です
>DllMain.obj : error LNK2001: 外部シンボル ""unsigned long __cdecl YdmGetModule
>Data(void *,struct HWND__ *)" (?YdmGetModuleData@@YAKPAXPAUHWND__@@@Z)" は
>未解決です

上記のメッセージを見ただけで、実際に試していない手抜きコメントですが
YdmAPI.libをリンクするライブラリとして指定していないのが原因だと思います。

[ ]
RE:00404 InetSpySrc & VC6No.00406
秀まるお2 さん 03/01/16 22:48
 
 以前あった話のことをすっかり忘れてしまったのでなんですが…。

 とりあえず、アルビレオさんのコメントの通りであればそれで即解決ですが、
そうでなかったとすると…

 コンパイル時のオプションに、IE_VERSIONだったかそういうシンボルを0x0200
に定義しないとダメだったような気がします。VC++5.0の標準環境なら必要ない
んだけども、VC++6.0を使ったり、新しいSDKに付属のヘッダファイルを使う場合
はそうしないとダメだったような…。

 明日会社で調べます。

[ ]
RE:00406 InetSpySrc & VC6No.00407
秀まるお2 さん 03/01/17 09:17
 
 今思い出したような気がします。実はYdmApi.hが間違ってます。

void YdmSetModuleData( HTRANS hTrans, HWND hwnd, DWORD dw );
DWORD YdmGetModuleData( HTRANS hTrans, HWND hwnd );

 と書いてある所を、

void WINAPI YdmSetModuleData( HTRANS hTrans, HWND hwnd, DWORD dw );
DWORD WINAPI YdmGetModuleData( HTRANS hTrans, HWND hwnd );

 としないとダメな気がします。

 それでダメなら、なんだろな?。とにかくここのヘッダファイルの記述がおか
しいせいでダメだったはずです。

 もしかすると、

void _cdecl YdmSetModuleData( HTRANS hTrans, HWND hwnd, DWORD dw );
DWORD _cdecl YdmGetModuleData( HTRANS hTrans, HWND hwnd );

 と書けば直るかも…。(自信なし)

[ ]
RE:00406 InetSpySrc & VC6No.00408
秀まるお2 さん 03/01/17 09:20
 
 すみません。過去ログから解決方法を見つけました。

 えるさんが的確なアドバイスをしてくださっていたのでした。えるさんの書き
込み内容をもう一度ここに書いてしまいます。

--------2000年7月26日の00146番発言、えるさんの書き込み内容---------

ydmapi.h の頭のあたりの

void YdmSetModuleData( HTRANS hTrans, HWND hwnd, DWORD dw );
DWORD YdmGetModuleData( HTRANS hTrans, HWND hwnd );

これらを YdmAPI.lib を dump した結果にあわせて

#ifdef STRICT
void WINAPIV YdmSetModuleData( HTRANS hTrans, LPVOID hwnd, DWORD dw );
DWORD WINAPIV YdmGetModuleData( HTRANS hTrans, LPVOID hwnd );
#else
void YdmSetModuleData( HTRANS hTrans, HWND hwnd, DWORD dw );
DWORD YdmGetModuleData( HTRANS hTrans, HWND hwnd );
#endif

と修正すれば通ります。
たぶん、InetSpy はソースコード中の FARPROC を WNDPROC に修正する必要もあ
りま
す。

本来ならば

#define HTRANS HANDLE



DECLARE_HANDLE(HTRANS)

に修正して YdmAPI.lib を再構築すべきでしょうね。
# VC5 にも DECLARE_HANDLE はありますよね。

[ ]