当前位置: 技术问答>linux和unix
200分,求Linux编译成带导出类的动态库
来源: 互联网 发布时间:2015-06-05
本文导语: 请高手指点,如何生成类似于VC中生成一个Lib和一个DLL的动态库。 因为我提供的动态库必须使用导出类,来做为调用者使用接口。 急盼回复!!! 请帮忙把我的头文件和makefile,改好了,我立即给分,谢谢!! #ifd...
请高手指点,如何生成类似于VC中生成一个Lib和一个DLL的动态库。
因为我提供的动态库必须使用导出类,来做为调用者使用接口。
急盼回复!!!
请帮忙把我的头文件和makefile,改好了,我立即给分,谢谢!!
#ifdef BLOCK_EXPORTS
#define BLOCK_API __declspec(dllexport)
#else
#define BLOCK_API __declspec(dllimport)
#endif
class BLOCK_API CBlock
{
protected:
CBlock();
virtual ~CBlock();
};
#======================Makefile for Server=====================
#======================Path Define=============================
SERVER = $(HOME)/IEngine
SERVER_BIN = $(SERVER)/bin
SERVER_SOURCE = $(SERVER)/source
SERVER_INCLUDE = $(SERVER)/include
SERVER_OBJ = $(SERVER)/obj
SERVER_MAKE = $(SERVER)/make
SERVER_CONFIG = $(SERVER)/config
SERVER_DEBUG = $(SERVER)/debug
CC = g++
#Debug版本的开关
CFLAGS = -g
# Release 版的开关
#CFLAGS = -O3
# Debug版本
MYFLAGS = -D_DEBUG
#Release 版本
#MYFLAGS =
COMPILE = $(CC) $(CFLAGS) $(MYFLAGS) -c -fpic -I$(SERVER_INCLUDE)
TARGET0 = $(SERVER_BIN)/block.so
#LIBRARYS = -lpthread -ldl -lmpatrol -lbfd -liberty
LIBRARYS = -lpthread -ldl
#==============================================================
OBJECTS0 = $(SERVER_OBJ)/Block.o
$(SERVER_OBJ)/BlockData.o
$(SERVER_OBJ)/BufferBlock.o
$(SERVER_OBJ)/Counter.o
$(SERVER_OBJ)/Instance.o
$(SERVER_OBJ)/Interface.o
$(SERVER_OBJ)/IRichBase.o
$(SERVER_OBJ)/Library.o
$(SERVER_OBJ)/Method.o
$(SERVER_OBJ)/Module.o
$(SERVER_OBJ)/ObjectBlock.o
$(SERVER_OBJ)/Richmap.o
$(SERVER_OBJ)/SubBlock.o
all : $(TARGET0)
$(TARGET0) : $(OBJECTS0)
$(CC) -shared -lc -o $(TARGET0) $(OBJECTS0) $(LIBRARYS)
$(SERVER_OBJ)/%.o : $(SERVER_SOURCE)/%.cpp
$(COMPILE) -o $@ $
因为我提供的动态库必须使用导出类,来做为调用者使用接口。
急盼回复!!!
请帮忙把我的头文件和makefile,改好了,我立即给分,谢谢!!
#ifdef BLOCK_EXPORTS
#define BLOCK_API __declspec(dllexport)
#else
#define BLOCK_API __declspec(dllimport)
#endif
class BLOCK_API CBlock
{
protected:
CBlock();
virtual ~CBlock();
};
#======================Makefile for Server=====================
#======================Path Define=============================
SERVER = $(HOME)/IEngine
SERVER_BIN = $(SERVER)/bin
SERVER_SOURCE = $(SERVER)/source
SERVER_INCLUDE = $(SERVER)/include
SERVER_OBJ = $(SERVER)/obj
SERVER_MAKE = $(SERVER)/make
SERVER_CONFIG = $(SERVER)/config
SERVER_DEBUG = $(SERVER)/debug
CC = g++
#Debug版本的开关
CFLAGS = -g
# Release 版的开关
#CFLAGS = -O3
# Debug版本
MYFLAGS = -D_DEBUG
#Release 版本
#MYFLAGS =
COMPILE = $(CC) $(CFLAGS) $(MYFLAGS) -c -fpic -I$(SERVER_INCLUDE)
TARGET0 = $(SERVER_BIN)/block.so
#LIBRARYS = -lpthread -ldl -lmpatrol -lbfd -liberty
LIBRARYS = -lpthread -ldl
#==============================================================
OBJECTS0 = $(SERVER_OBJ)/Block.o
$(SERVER_OBJ)/BlockData.o
$(SERVER_OBJ)/BufferBlock.o
$(SERVER_OBJ)/Counter.o
$(SERVER_OBJ)/Instance.o
$(SERVER_OBJ)/Interface.o
$(SERVER_OBJ)/IRichBase.o
$(SERVER_OBJ)/Library.o
$(SERVER_OBJ)/Method.o
$(SERVER_OBJ)/Module.o
$(SERVER_OBJ)/ObjectBlock.o
$(SERVER_OBJ)/Richmap.o
$(SERVER_OBJ)/SubBlock.o
all : $(TARGET0)
$(TARGET0) : $(OBJECTS0)
$(CC) -shared -lc -o $(TARGET0) $(OBJECTS0) $(LIBRARYS)
$(SERVER_OBJ)/%.o : $(SERVER_SOURCE)/%.cpp
$(COMPILE) -o $@ $