浏览 5953 次
锁定老帖子 主题:请教一个ruby调用dll的问题
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-07
bool ICTCLAS_Init(const char * sInitDirPath=NULL); bool ICTCLAS_ParagraphProcess(const char *sParagraph,char *sResult); bool ICTCLAS_Exit(); 下面是一段c的实现 #include "ICTCLAS.h" #include <stdio.h> #include <string.h> int main(int argc, char* argv[]) { //Sample1: Sentence or paragraph lexical analysis with only one result char sSentence[2000],sSentenceResult[5000]; if(!ICTCLAS_Init()) { printf("Init fails\n"); return -1; } printf("Input sentence now('q' to quit)!\n"); scanf("%s",sSentence); while(_stricmp(sSentence,"q")!=0) { ICTCLAS_ParagraphProcess(sSentence,sSentenceResult); printf("%s\nInput string now('q' to quit)!\n",sSentenceResult); scanf("%s",sSentence); } ICTCLAS_Exit(); return 0; } 请问用ruby如何实现 大致结构是 require 'Win32API' a = Win32API.new('dll.dll', 'getSome', paramsType, returnValueType) a.call(params) 但是尝试失败,请指教,谢谢. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-03-07
间接的用LoadLibrary这个函数试试。
|
|
返回顶楼 | |
发表时间:2007-03-07
public synchronized native boolean init(int i, int j); public synchronized native String paragraphProcess(String sParagraph); public synchronized native boolean fileProcess(String source, String target); require 'Win32API' a = Win32API.new('ICTCLAS', 'Init',['i','i'], 'v') a.call(0,1) b = Win32API.new('ICTCLAS','ParagraphProcess','P','P') puts b.call("你太有才了") c = Win32API.new('ICTCLAS','FileProcess',['P','P'],'v') puts c.call("in.txt","out.txt") 现在就是 b = Win32API.new('ICTCLAS','ParagraphProcess','P','P') puts b.call("你太有才了") 这个接口调用失败,请问String类型的参数我是指定为'P'吗? |
|
返回顶楼 | |
发表时间:2007-03-08
知道了
b = Win32API.new('ICTCLAS','ParagraphProcess','PP','v') res = '\0'*256 b.call("你太有才了",res) puts res |
|
返回顶楼 | |