この例は、C++ を使用して Excel 用の XLL をビルドするために使用されています。2 つの double 引数を取り、文字列を返す独自の関数を作成しました。
__declspec(dllexport) LPXLOPER12 WINAPI PTstate (double P, double T)
{
static XLOPER12 xResult;
xResult.xltype = xltypeStr;
debugPrintf("P = %d\n", P);
debugPrintf("T = %d\n", T);
Calculate(P, T);
xResult.val.str = L"\013Calculated";
return(LPXLOPER12) &xResult;
}
関数定義:
{
L"PTstate", // Function name/ordinal
L"UBB", // Func signature type **U - XLOPER12, BB - P and T double**
L"PTstate", // Func name in Func wizard
L"P, T", // Arg name in Func wizard
L"1", // Function type
L"SimpleXll2007", // Category in Func wizard
L"", // Shortcut (commands only)
L"", // Help topic
L"", // Func help in Func wizard
L"", // Arg help in Func wizard
L"" // Arg help in Func wizard
},
P = 100,345 T = 200,567 の場合、出力に P = 2061584302 および T = -584115552 が表示されます - debugPrintf 関数を使用しました。関数の引数が長い場合:
__declspec(dllexport) LPXLOPER12 WINAPI PTstate (long P, long T)
および関数シグネチャ「UJJ」 P = 100,345 T = 200,567 を試してみると、P = 100 と T = 201 が得られます。
では、どの権利関数署名を使用する必要がありますか?