请问:如何将dll中的导出给用户使用?就像ACE那样?
注意到,尽管ACE被编译成DLL,我们仍然可以使用DLL中定义的各种类。现在我想对ACE进一步封装,加入本项目的tcp数据包解析逻辑,并封装成DLL供
项目组成员使用,问题是:
如果将该DLL中的类导出给其它人使用?使用什么语法呢?
有知道的请不吝指教,谢谢! 最省事的做法是通过 MPC
下面是我的一个示例
//-*- MPC -*- now wouldn't this be cool...
// ServiceFactory.mpc,v 1.0 2006/08/01 tbergmann Exp
// 大厅服务
project(LobbyService) : acelib{
sharedname = LobbyService
dynamicflags += ACE_BUILD_SVC_DLL ACEXML_HAS_DLL ACEXML_PARSER_HAS_DLL
dllout = $(BABY_ROOT)/lib
libout = $(BABY_ROOT)/lib
includes += $(BABY_ROOT)/ServiceFactory
libpaths += $(BABY_ROOT)/lib
libs +=ServiceFactory ACEXML ACEXML_Parser
Source_Files {
LobbyServiceFactory.cpp
OptionsHandler.cpp
GameClient.cpp
}
Header_Files {
LobbyServiceFactory.h
OptionsHandler.h
GameClient.h
}
}
下面是一个头函数的声明
//@file: GameClient.h
//@date: 2007-1-26
//@author: Stone Jiang<2005119@gmail.com>
#ifndef GAME_CLIENT_H_20070126
#define GAME_CLIENT_H_20070126
#include "ace/svc_export.h"
#include "LobbyServiceFactory.h"//User_T
class ACE_Svc_Export GameClient_T: public ClientHandler_T
{
public:
GameClient_T(void* arg = 0);
virtual ~GameClient_T();
// 处理UDP请求
virtual int processUDPRequest(ACE_Message_Block* mb,
const ACE_INET_Addr&remoteAddr);
//处理客户端登录
virtual int login(const char* name, const char* password);
public:
User_Tuser_;
public:
//for debug only
virtual int process();
};
#endif
ACE_Svc_Export 的定义在 "ace/svc_export.h" 中.
当然你也可以通过 generate_export_file.pl 生成一个你自己的 export文件.
更进一步的细节,可以看一下
C++ Language Reference
dllexport, dllimport
页:
[1]