Windows CE6.0x86用のVisualStudio2008 C++03アプリケーションがあります。DLLから関数を呼び出すと、アクセス違反の例外が発生するという問題が発生しますが、デバッグモードでのみ発生します。
// DLL header
extern "C" BOOL __stdcall Foo( const wchar_t*, const wchar_t*, wchar_t*, unsigned long );
// program
#include "foo.h"
#pragma comment( lib, "foo.lib" )
int main()
{
wchar_t f[ 100 ];
Foo( L"something", L"nothing", f, countof( f ) ); // access violation
return 0;
}
これはさまざまな原因で発生する可能性があることはわかっていますが__stdcall
、DLLヘッダーでの使用に興味があります。Windows CEでは、デフォルト(Windows APIの場合)は__cdecl
です。なぜこのライブラリは使用するの__stdcall
でしょうか?それは有害な影響を与える可能性がありますか?
実際、なぜ呼び出し規約を指定するのですか?
ありがとう