0

ここで説明されているように、DLLのロードが遅れています。DLLには、定数定義と関数宣言の両方を含む.hファイルが付属しています。これは、私がやろうとすると

MyFunction = pICFUNC(lpfnGetProcessID);  // See link above

MyFunctionは.hファイルですでにそのように宣言されているため、コンパイラは「エラー:割り当てで'int(*)(int、int、int)'を'int(int、int、int)'に変換できません」と文句を言います。

int __stdcall MyFunction (int, int, int);

するべきか:

A).hファイルの関数プロトタイプをコメントアウトし、を使用して独自のプロトタイプを作成します

typedef int (__stdcall * pICFUNC)(int, int, int);
pICFUNC MyFunction;
MyFunction = pICFUNC(lpfnGetProcessID); 

B)A)と同じことを行いますが、.hファイルのプロトタイプをコメントアウトする代わりに、関数に別の名前(MyFunction_local)を付けます。

C)私が考えていなかった何か。

A)をやりたいのですが、そのようなサードパーティの.hファイルをいじるのは間違っていると感じています。

4

1 に答える 1

1

一般に、名前は同じで意味が異なる2つのシンボルがあるのは悪いニュースです。ローカルポインタに別の名前を使用するオプションBは、最善の解決策のように思えます。

関数とポインターの両方に同じ名前を使用することを主張する場合は、どちらか一方を名前空間に入れることができます。

于 2012-07-18T17:01:15.670 に答える