【发布时间】:2020-06-25 03:20:14
【问题描述】:
我正在尝试在 Windows 中使用 gai_strerrorA 函数进行 C 绑定。 gai_strerrorA 定义存在于头文件(Ws2tcpip.h)上,而不存在于静态库文件(.lib 文件)上,Ws2_32.lib。
gai_strerrorA function definition
WS2TCPIP_INLINE
char *
gai_strerrorA(
_In_ int ecode)
{
static char buff[GAI_STRERROR_BUFFER_SIZE + 1];
(void)FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM
|FORMAT_MESSAGE_IGNORE_INSERTS
|FORMAT_MESSAGE_MAX_WIDTH_MASK,
NULL,
ecode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPSTR)buff,
GAI_STRERROR_BUFFER_SIZE,
NULL);
return buff;
}
我当前的解决方案是通过调用 FormatMessageA 在 Crystal 中重新创建函数定义,该函数定义在另一个 .lib 文件 (Kernel32.lib) 中定义。但是,有没有更好的方法来解决这个问题,也许通过链接水晶头文件?
【问题讨论】:
标签: crystal-lang