ちなみに、DLL内にて下記のようなコーディングになっておりまして
★の行のみコメントアウトする事でReleaseでビルドしたDLLが
呼び出せるようになりました。
---
#pragma data_seg(.shared1)
static UINT カウンタ = 0;
#pragma data_seg()
・
・
・
extern C
void APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID
lpReserved )
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
★ ++カウンタ;
break;
case DLL_PROCESS_DETACH:
★ --カウンタ;
break;
}
return;
}
---
一種の参照カウンタを共有領域におきたいという気持ちのコードですね。
やったことありませんが。名前つきデータセクションを使用する場合は
*.defファイルで指定(SECTIONS)するか、
リンカーに教える(/SECTION)必要があるそうです。
その部分が欠落しているのではないでしょうか。
そうするとリリースだけで動かなくなるんですね。「10へぇ~」
あれ? 良く見ると*.defに指定がありますねぇ。不思議だ。
http://msdn.microsoft.com/ja-jp/library/sf9b18xk(VS.100).aspx
defファイル以外に、リンクの設定も必要みたいですね。
DllMain の戻り値は BOOL型で
DLL_PROCESS_ATTACH のときは TRUE を返さなければいけないのでは?
このコードで動く方が不思議な気がしますが。。。
>>仲澤@失業者さん
>>ITOさん
>>subaruさん
ありがとうございます!!!
subaruさんのおっしゃる通り、DllMain()をvoidからBOOLに変更し
TRUEを返すように変更する事で、上記★のカウンタ操作をコメント
アウトする事なく、ReleaseビルドしたDLLが正常に動作しました。
重ね重ね、本当にありがとうございました。