秀丸はx86版だと数値が32bit、x64版だと数値が64bitですが、 COMでは、引数などで渡ってくる数値の値が、「x64版でも数値が32bitになっています」。 これを解消し、x64版の数値を64bitとしてやりとりするには以下のように記述する必要性があります。
整数の引数の型は、intでもlongでも受け取れるように、longに統一しましょう。 (IntPtrやnintは「秀丸から呼び出すCOMメソッドの数値の引数の型」としては使えないので注意してください)
Hm.IComSupportX64
を実装し、
public bool X64MACRO() { return true; }
を実装します。
using System; using System.Diagnostics; using System.Runtime.InteropServices; using HmNetCOM; namespace NET4COMServer { [ComVisible(true)] [Guid("BD55F2A6-9ED0-4F4F-9D37-E6B84BE63272")] public class NET4COMServer : Hm.IComSupportX64 { public bool X64MACRO() { return true; } public string str_add(string a, string b) { return a + b; } public long int_add(long a, long b) { return a + b; } } }