中国象棋残局编号剖析驱动顺序(ECCO.DLL/libecco.so)运用说明
 
象棋百科全书网 (webmaster@xqbase.com) 20074
 
一、Windows驱动顺序ECCO.DLL
 
  ECCO.DLL是著名象棋软件《棋牌乐 捕鱼棋牌游戏赚钱》自带的残局剖析系统,现版本号为“ECCO (2004) Analyst 1.0”,为推行ECCO编号系统,特此宣布此驱动顺序的接口,宽大象棋软件的开辟者能够以任何非商业目的运用该顺序。
  ECCO.DLL32WindowsAPI函数静态链接库,包罗了以下5个函数,其接口是:
 
LPCSTR (WINAPI *EccoVersion)(VOID);
// 前往ECCO编号识别系统版本号(注:这个函数的细叱别名应当是"_EccoVersion@0",下同)
VOID (WINAPI *EccoInitOpenVar)(BOOL bTrad);
// 初始化残局和变例字符串,调用以下函数前务必先调用此函数
LONG (WINAPI *EccoIndex)(LPCSTR szMoveFile);
// 前往某个残局的ECCO编号(注:这个函数的细叱别名应当是"_EccoIndex@4",下同)
LPCSTR (WINAPI *EccoOpening)(LONG dwEccoIndex);
// 前往ECCO编号对应的残局称呼
LPCSTR (WINAPI *EccoVariation)(LONG dwEccoIndex);
// 前往ECCO编号对应的变例称呼
 
  其中EccoIndex函数是残局剖析系统的中心,szMoveFile是用符号纵线花样(C2.5)按递次排列的字符串,譬喻"C2.5N8+7"即象征“1. 炮二平五 马8进7”,前往4字节的32位整数(LONG),其中前3字节即ECCO编号,该32位整数可直接作为EccoOpeningEccoVariation的参数。调用下面这些函数可参考以下C言语的实例:
 
HMODULE hModule = LoadLibrary("ECCO.DLL");
EccoVersion = (LPCSTR (WINAPI *)(VOID)) GetProcAddress(hModule, "_EccoVersion@0");
EccoInitOpenVar = (VOID (WINAPI *)(BOOL)) GetProcAddress(hModule, "_EccoInitOpenVar@4");
EccoIndex = (LONG (WINAPI *)(LPCSTR)) GetProcAddress(hModule, "_EccoIndex@4");
EccoOpening = (LPCSTR (WINAPI *)(LONG)) GetProcAddress(hModule, "_EccoOpening@4");
EccoVariation = (LPCSTR (WINAPI *)(LONG)) GetProcAddress(hModule, "_EccoVariation@4");
// 从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.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(void);
void EccoInitOpenVar(int bTrad); // 参数0透露表现简体,1透露表现繁体
long EccoIndex(const char *szMoveFile);
const char *EccoOpening(long dwEccoIndex);
const char *EccoVariation(long dwEccoIndex);
 
  与Windows分歧,这些函数的别名没有前缀“_”和后缀“@...”。调用下面这些函数可参考以下C言语的实例:
 
#include <dlfcn.h>
……
void *hModule = dlopen("libecco.so", RTLD_LAZY);
EccoVersion = (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.DLLlibecco.so的下载所在是:/ecco/ecco_dll.7z7z文件用7-ZipWinRAR(3.6+)翻开
  若有其他运用上的问题,可上岸《象棋百科全书》论坛(bbs.xqbase.com)的“残局百科”栏目讯问。
  • 上一篇 中国象棋残局编号——E.仙人指路局
  • 下一篇 现代中国象棋残局的生长趋向(图表)
  • 返 回 象棋百科全书——残局百科
  • www.xqbase.com