extern "C" INT_PTR _cdecl SampleFunc( INT_PTR n, char* psz );のように宣言した場合、秀丸マクロ側からは、
#a = dllfunc( "SampleFunc", 100, "test" );のように呼び出すことが出来ます。
extern char* _cdecl SampleFuncStr();char*型で宣言した関数が返す値は、スタック上ではなく、固定のメモリ領域のアドレスでなくてはいけません。例えば、
はOKですが、char* _cdecl SampleFuncStr() { static char sz[100]; strcpy_s( sz, "test" ); return sz; }
は正しく動作しない恐れがあります。char* _cdecl SampleFuncStr() { char sz[100]; strcpy_s( sz, "test" ); return sz; }
$a = dllfuncstr( "SampleFuncStr" );
extern "C" void FLOATMACRO() {}という関数を用意し、.defファイルでこの関数をexportすればいいです。
extern double _cdecl SampleFunc();
extern "C" double _cdecl SampleFunc( double n, char* psz );
extern "C" INT_PTR _cdecl SampleFunc( INT_PTR n, WCHAR* pwsz );
extern "C" WCHAR* _cdecl SampleFuncStr( INT_PTR n, WCHAR* pwsz );