自作DLLの引数について、ポインタ渡しが??
VS2005 VC++環境でMFCスマートデバイスDLLを作成しています(アプリ側もVS2005 VC++)。
テスト用のアプリからDLL内の文字列を引数とする関数を呼び出すと、
呼ばれた関数に正しく文字列が渡りません。
以下の場合、func1のw1はデバッガで正しく見れません。
でもw2にtcscpyは成功しw2には正しく値がセットされます。
このときにw1のアドレスがなぜか変更されます。
以下の例では引数が1つですが、2つ以上引数がある時には
その他の引数のアドレスもとびます。
func2のl1は正常に見れます。
func3のl1は正常に見れません。
ポインタ渡しするときに異常になるのですが、
原因がさっぱりわかりません。
同じことをWindowsXP用のプロジェクトを作り、
XPで確認するとどれも正常に見れます。
どなたかアドバイスをお願いします。
----------------------------------------DLL側----------------------------------------
extern "C" __declspec(dllexport) void func1(WCHAR * w1)
{
WCHAR w2[16] ;
_tcscpy(w2,w1);
return;
}
extern "C" __declspec(dllexport) void func2(long l1)
{
long l2 ;
l2 = l1 ;
return;
}
extern "C" __declspec(dllexport) void func3(long *l1)
{
long l2 ;
l2 = *l1 ;
return;
}
----------------------------------------アプリ側----------------------------------------
extern "C" __declspec(dllimport) void func1(WCHAR *);
extern "C" __declspec(dllimport) void func2(long );
extern "C" __declspec(dllimport) void func3(long *);
・・・・中略・・・・
WCHAR a[16] ;
_tcscpy(a,_T("ABC"));
func1(a);
func2(123);
long l3 = 123 ;
func3(&l3);