请高手看看:显式调用动态链接库,出现“I/O error 105”错误!
显式调用动态链接库,出现“I/O error 105”错误!
代码如下:
int (__stdcall* init_seg)(char *errmsg);
int (__stdcall* seg_sent)(wchar_t *pw, int len, char * outbuf, int buflen);
void CShidllDlg::OnButton1()
{
FILE *outFile;
wchar_t * pw = L"王建平你是个学生吧。";
char buf[256];
wchar_t wbuf[128];
HMODULE h = LoadLibrary("segtag.dll");
if (h == 0) exit(1);
init_seg = (int (__stdcall *)(char *errmsg))GetProcAddress(h, "init_seg");
seg_sent = (int (__stdcall *)(wchar_t *,int,char *,int))GetProcAddress(h, "seg_sent");
wcscpy(wbuf, pw);
init_seg(buf);
if (seg_sent(wbuf, wcslen(pw), buf, sizeof(buf)))
outFile=fopen("result.txt","wt");
fprintf(outFile,"王建平你是个学生吧。==>%s\n", buf);
FreeLibrary(h);
return ;
}
函数接口说明:
int init_seg(char *errmsg);
参数
无。
描述
初始化切分引擎。如果有错,会在errmsg中返回错误串。请保证传递至少256字节的缓冲区。
返回值
true:成功
false:失败
int seg_sent(wchar_t *pw, int len, char * textoutbuf, int buflen);
int segtag_1(wchar_t *pw, int len, SEGREC * segoutbuf, int segbuflen);
参数
pw 指向要切分的汉语文本。
len 指向文本的长度(以wchar为单位)。
textoutbuf 指向存放切分结果文本的缓冲区。
buflen 指明缓冲区长度(以字节为单位)。
segoutbuf 指向存放切分结果的缓冲区数组。
segbuflen 指明缓冲区数组的大小(以元素个数为单位)。
描述
切分一个汉语句子。
返回值
true:成功
false,失败。可能是缓冲区太小。
输出结果:王建平你是个学生吧。==>I/O error 105
如果写成以下形式,则可以编译运行。
#include "stdafx.h"
#include <windows.h>
int (__stdcall* init_seg)(char *errmsg);
int (__stdcall* seg_sent)(wchar_t *pw, int len, char * outbuf, int buflen);
int _tmain(int argc, _TCHAR* argv[])
{
wchar_t * pw = L"王建平你是个学生吧。";
char buf[256];
wchar_t wbuf[128];
HMODULE h = LoadLibrary("segtag.dll");
if (h == 0) exit(1);
init_seg = (int (__stdcall *)(char *errmsg))GetProcAddress(h, "init_seg");
seg_sent = (int (__stdcall *)(wchar_t *,int,char *,int))GetProcAddress(h, "seg_sent");
wcscpy(wbuf, pw);
init_seg(buf);
if (seg_sent(wbuf, wcslen(pw), buf, sizeof(buf)))
printf("王建平你是个学生吧。==>%s\n", buf);
FreeLibrary(h);
return 0;
}
请高手帮忙解答。谢谢。