1、中国象棋开局编号分析驱动程序(ECCO.DLL/libecco.so)使用说明 象棋百科全书网 () 2007 年 4 月 一、Windows 驱动程序 ECCO.DLL ECCO.DLL 是著名象棋软件象棋巫师自带的开局解析系统,现版本号为“ECCO (2004) Analyst 1.0”,为推广 ECCO 编号体系,特此公布此驱动程序的接口,广大象棋软件的开发者可以以任何非商业目的使用该程序。 ECCO.DLL 是 32 位 Windows 的 API 函数动态链接库,包含了以下 5 个函数,其接口是: LPCSTR (WINAPI *EccoVersion)(VOID); / 返回 EC
2、CO 编号识别系统版本号(注:这个函数的系统别名应该是“_EccoVersion0“,下同) VOID (WINAPI *EccoInitOpenVar)(BOOL bTrad); / 初始化开局和变例字符串,调用以下函数前务必先调用此函数 LONG (WINAPI *EccoIndex)(LPCSTR szMoveFile); / 返回某个开局的 ECCO 编号(注:这个函数的系统别名应该是“_EccoIndex4“,下同) LPCSTR (WINAPI *EccoOpening)(LONG dwEccoIndex); / 返回 ECCO 编号对应的开局名称 LPCSTR (WINAPI *
3、EccoVariation)(LONG dwEccoIndex); / 返回 ECCO 编号对应的变例名称 其中 EccoIndex 函数是开局解析系统的核心,szMoveFile 是用符号纵线格式(即 C2.5)按顺序排列的字符串,例如“C2.5N8+7“即代表“1. 炮二平五 马进”,返回 4 字节的 32 位整数(LONG),其中前 3 字节即 ECCO 编号,该 32位整数可直接作为 EccoOpening 和 EccoVariation 的参数。调用上面这些函数可参考以下 C 语言的实例: HMODULE hModule = LoadLibrary(“ECCO.DLL“); Ecco
4、Version = (LPCSTR (WINAPI *)(VOID) GetProcAddress(hModule, “_EccoVersion0“); EccoInitOpenVar = (VOID (WINAPI *)(BOOL) GetProcAddress(hModule, “_EccoInitOpenVar4“); EccoIndex = (LONG (WINAPI *)(LPCSTR) GetProcAddress(hModule, “_EccoIndex4“); EccoOpening = (LPCSTR (WINAPI *)(LONG) GetProcAddress(hModu
5、le, “_EccoOpening4“); EccoVariation = (LPCSTR (WINAPI *)(LONG) GetProcAddress(hModule, “_EccoVariation4“); / 从 ECCO.DLL 中获取库函数 EccoVersion(); / 返回指向字符串“ECCO (2004) Analyst 1.0“的指针(LPCSTR) EccoInitOpenVar(FALSE); / 使用前务必初始化,参数 FALSE 表示简体,TRUE 表示繁体 EccoIndex(“C2.5N8+7N2+3R9.8R1.2P7+1R2+6N2+3P7+1C8.9R2
6、.3C9-1N8+7A4+5C8.9“); / 返回由“C45“对应的 4 字节组成的 32 位整数(LONG) EccoOpening(*(LPLONG) “D29“); / 返回指向字符串“顺炮直车对横车“的指针(LPCSTR) EccoVariation(*(LPLONG) “D29“); / 返回指向字符串“红两头蛇对黑双横车“的指针(LPCSTR) 二、Linux 驱动程序 libecco.so Linux 的象棋软件时使用 ECCO 时,可调用 Linux 下的 ECCO 分析驱动程序 libecco.so,其定义的函数如下: const char *EccoVersion(voi
7、d); void EccoInitOpenVar(int bTrad); / 参数 0 表示简体,1 表示繁体 long EccoIndex(const char *szMoveFile); const char *EccoOpening(long dwEccoIndex); const char *EccoVariation(long dwEccoIndex); 与 Windows 不同,这些函数的别名没有前缀“_”和后缀“.”。调用上面这些函数可参考以下 C 语言的实例: #include void *hModule = dlopen(“libecco.so“, RTLD_LAZY); E
8、ccoVersion = (const char *(*)(void) dlsym(hModule, “EccoVersion“); EccoInitOpenVar = (void (*)(long) dlsym(hModule, “EccoInitOpenVar“); EccoIndex = (long (*)(const char *) dlsym(hModule, “EccoIndex“); EccoOpening = (const char *(*)(long) dlsym(hModule, “EccoOpening“); EccoVariation = (const char *(*)(long) dlsym(hModule, “EccoVariation“); 这些函数的用法与 Windows 驱动程序中的相应函数一样,这里不再重复。 三、下载 ECCO.DLL 和 libecco.so 的下载地址是:http:/ 文件用 7-Zip 或 WinRAR(3.6+)打开。若有其他使用上的问题,可登陆象棋百科全书论坛()的“开局百科”栏目询问。 上一篇 中国象棋开局编号 E仙人指路局 下一篇 当代中国象棋开局的发展趋势 (图表) 返 回 象棋百科全书 开局百科