私のDLLに次の関数があるとしましょう:
void TestFunction(int type, void* data)
その関数は、その DLL をロードするアプリケーションから呼び出されます。アプリケーションは構造体を初期化し、その構造体へのポインターをその関数に送信します。
SampleStruct strc;
TestFunction(DT_SS, &ss);
ここまでは順調ですね。今私を悩ませているのは、メモリ内の strcc 変数を別の構造体に置き換える方法です。私のdllで次のことを行うと:
SampleStruct dllstrcc;
data = &dllstrcc;
dataは新しいdllstrcc構造体を指すようになりましたが、関数が存在し、制御がアプリケーションに戻ると、 strcは依然として最初の構造体を指します。各フィールドを割り当てずに、アプリケーションの構造をdllの構造に置き換えるにはどうすればよいですか:
data.vara = dllstrcc.vara;
data.varb = dllstrcc.varb;
data.varc = dllstrcc.varc;