我对与solaris ,hp ,windows这三个平台的动态库的实现,进行了探索,对于soloaris,hp等Unix平台来讲,主要是make文件的制作,而Windows下还需要对类头进行修饰.
本列主要实现了一个动态库和一个调用动态库的运行程序,动态库包括mytime.h ,mytime.cpp , 在windows下还需要dllt1.cpp ,这个包含动态库的DllMain入口函数,
StdAfx.cpp ,stdAfx.h是与预编译相关的文件. 运行程序包括dy.cpp 包括对动态库的调用。
下面先谈Unix下的编译指令.
一. hp平台下
在hp下使用hp自带的aCC编译器
rm *.o
rm *.sl
aCC +z mytime.cpp //+z生成动态库需要的*.o文件
aCC -b -o libmy.sl mytime.o //-b生成动态库 ,-o libmy.sl 表示生成动态库的名称为libmy.sl
aCC dy.cpp libmy.sl //用dy.cpp libmy.sl生成可执行程序,默认为a.out,也可以用 –o指定名称
二. solaris平台下
在soloaris下用workshop带的 CC .
CC -c mytime.cpp //-c 生成动态库需要的*.o文件
CC -G -o libmy.so mytime.o -b生成动态库,名称为libmy.so
CC -Bdynamic -o myee libmy.so dy.cpp //生成可执行程序myee
ln -s /export/home/hurh/tdll/libmy.so /lib // solaris下在运行前要用root用户配置动态库libmy.so
下面再谈谈Windows下的动态库需要考虑的问题,用VC编译。