请教DLL相关内容

KK_Dog 2002-04-20 10:47:02
我在做一个局域网管理系统,C/S模式的,想将server做成可扩展的,设计把处理client发送来请求的过程做成一个个函数放在Server的DLL中。这样以后增加功能不用升级client端,只需将用新的DLL替换server的dll即可。
现在的问题是EXE不知道DLL提供哪些函数,我想到的解决方法是将所有的函数声明规定为
BOOL On+命令名(LPVOID lpvParamStruct,LPVOID lpvResultStruct)
然后在EXE中显式连接DLL,用一个函数指针去取得该命令的处理函数,如果没有找到这样名称的函数则说明Server暂不提供对该命令的支持,向Client返回"Bad Command"。
我觉得上面的处理方法限制太大,不知道各位大侠有其他的解决方案没?

Thanks!
...全文
21 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK_Dog 2002-04-20
  • 打赏
  • 举报
回复
对了,能帮我提出好的解决方案的,我可以赠送500分作酬谢, :)
KK_Dog 2002-04-20
  • 打赏
  • 举报
回复
可是,我想要的是一个只需要增加DLL就能增加功能的服务器,EXE文件不需要重新编译的,问题是该如何将新命令和新加入DLL的函数关联,使得server自动调用该函数处理该命令。不修改server的程序源代码就可实现的。
wiler 2002-04-20
  • 打赏
  • 举报
回复
服务端可这样:
int AllServer(const char *CommandStr,char *Msg)
{
//是什么服务就调什么函数
if(strcmp(CommandStr,"Test")==0)
{
...
strcpy(Msg,"Success");
return 1;
}
if(...)
...
//否则返回错误
strcpy(Msg,"Bad Command");
return 0;
}
piaorenqian 2002-04-20
  • 打赏
  • 举报
回复
我的想发和你一样
在DLL中建立一个数组,每增加一个命令处理函数,在数组中增加一个命令字符串,server调用dll时先在字符串中寻找,找到命令就成功,没找到,在是
bad command
KK_Dog 2002-04-20
  • 打赏
  • 举报
回复
我想到了另一个解决方案:
把要处理的命令和处理它的函数作成一个映射表,同样放在DLL中,这样就可以达到不动Server主程序的目的了,一劳永逸!
:)

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧