電子書籍の厳選無料作品が豊富!

グローバルフックをすべく、他プロセスのクラス名の取得方法を考えているのですが、途中でつまづいてしまいました。
タイトルのように、
LINK : warning LNK4039: section '.myhook' specified with /SECTION option does not exist
というエラーがでて先へ進めません。

以下にやったことを書きます。

//thedll.c
#include <windows.h>

#pragma comment(linker, "/SECTION:.myhook,RWS")
#pragma data_seg()
static CHAR buff[1024];
#pragma data_seg()

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
return TRUE;
}

//hWndFromウィンドウの1つ下のウィンドウのクラス名取得
CHAR *GetNextWndClassName(HWND hWndFrom)
{
HWND hWndNext;

hWndNext = GetWindow(hWndFrom, GW_HWNDNEXT);
GetClassName(hWndNext, buff, sizeof(buff) -1);

return buff;
}


//thedll.def
LIBRARY thedll
EXPORTS
GetNextWndClassName @1

SECTIONS
.myhook READ WRITE SHARED


これを以下のコマンドでコンパイル
cl /LD thedll.c kernel32.lib user32.lib gdi32.lib /DEF:thedll.def

エラーの内容は、.myhookセクションがないというようなものですが、、、DEFファイルがいけないのか、はたまた#pragma宣言に問題があるのか。

ご指摘おねがいします。

A 回答 (1件)

data_segでセクションを指定するのと変数の初期化が必要ですね。


変数は初期化しないと、そのセクションに確保されないようです。

#pragma data_seg(".myhook")
static CHAR buff[1024] = "";
#pragma data_seg()
    • good
    • 0
この回答へのお礼

初期化しないといけないのか・・。
一人で何日考えてもきっとわからなかったと思います。
ありがとうございました。

お礼日時:2005/11/27 09:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!