找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4264|回复: 1

请问:如何将dll中的导出给用户使用?就像ACE那样?

[复制链接]
发表于 2007-12-18 23:36:58 | 显示全部楼层 |阅读模式
注意到,尽管ACE被编译成DLL,我们仍然可以使用DLL中定义的各种类。
现在我想对ACE进一步封装,加入本项目的tcp数据包解析逻辑,并封装成DLL供
项目组成员使用,问题是:
如果将该DLL中的类导出给其它人使用?使用什么语法呢?
有知道的请不吝指教,谢谢!
 楼主| 发表于 2007-12-18 23:38:18 | 显示全部楼层
最省事的做法是通过 MPC

下面是我的一个示例
  1. //  -*- MPC -*- now wouldn't this be cool...
  2. // ServiceFactory.mpc,v 1.0 2006/08/01 tbergmann Exp
  3. // 大厅服务
  4. project(LobbyService) : acelib{
  5.    sharedname = LobbyService
  6.    dynamicflags += ACE_BUILD_SVC_DLL ACEXML_HAS_DLL ACEXML_PARSER_HAS_DLL
  7.    dllout = $(BABY_ROOT)/lib
  8.    libout = $(BABY_ROOT)/lib
  9.    includes += $(BABY_ROOT)/ServiceFactory
  10.    libpaths += $(BABY_ROOT)/lib
  11.    libs +=  ServiceFactory ACEXML ACEXML_Parser
  12.   
  13.    Source_Files {
  14.          LobbyServiceFactory.cpp
  15.          OptionsHandler.cpp
  16.          GameClient.cpp
  17.        }
  18.    Header_Files {
  19.         LobbyServiceFactory.h
  20.         OptionsHandler.h
  21.         GameClient.h
  22.    }   
  23. }
复制代码

下面是一个头函数的声明
  1. //@file: GameClient.h
  2. //@date: 2007-1-26
  3. //@author: Stone Jiang<[email]2005119@gmail.com[/email]>
  4. #ifndef GAME_CLIENT_H_20070126
  5. #define GAME_CLIENT_H_20070126
  6. #include "ace/svc_export.h"
  7. #include "LobbyServiceFactory.h"  //User_T
  8. class ACE_Svc_Export GameClient_T: public ClientHandler_T
  9. {
  10. public:
  11.     GameClient_T(void* arg = 0);
  12.     virtual ~GameClient_T();
  13.     // 处理UDP请求
  14.     virtual int processUDPRequest(ACE_Message_Block* mb,
  15.         const ACE_INET_Addr&remoteAddr);
  16.    
  17.     //处理客户端登录
  18.     virtual int login(const char* name, const char* password);
  19. public:
  20.     User_T  user_;
  21. public:
  22.     //for debug only
  23.     virtual int process();
  24. };
  25. #endif
复制代码

ACE_Svc_Export 的定义在 "ace/svc_export.h" 中.

当然你也可以通过 generate_export_file.pl 生成一个你自己的 export文件.

更进一步的细节,可以看一下

C++ Language Reference  


dllexport, dllimport
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-5-20 12:30 , Processed in 0.020813 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表