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指定名称 |
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 |
#ifndef MYTIME_H #define MYTIME_H #ifndef WIN32 #define DLLT_API __declspec(dllexport) #else #ifdef JESTERDLL #define DLLT_API __declspec(dllexport) #else #define DLLT_API __declspec(dllimport) #pragma comment(lib, "dllt1.lib") #endif #endif struct DATETYPE { int year; int mon; int day; }; struct TIMETYPE { char hour; char min; char sec; }; int DLLT_API getdate(DATETYPE *d); int DLLT_API gettime(TIMETYPE *t); class DLLT_API gqlass{ public: int ineid; void setneid(int neid); gqlass(); ~gqlass(); }; #endif |
//mytime.cpp #include"stdafx.h" #include "time.h" #include "mytime.h" int getdate(DATETYPE *d) { long ti; struct tm *tm; time(&ti); tm=localtime(&ti); d->year=tm->tm_year+1900; d->mon=tm->tm_mon+1; d->day=tm->tm_mday; return 0; } int gettime(TIMETYPE *t) { long ti; struct tm *tm; time(&ti); tm=localtime(&ti); t->hour=tm->tm_hour; t->min=tm->tm_min; t->sec=tm->tm_sec; return 0; } gqlass::gqlass() { ineid=0; } gqlass::~gqlass() { } void gqlass::setneid(int neid) { ineid=neid; } //dy.cpp #include"stdafx.h" #include "stdio.h" #include "../dllt1/mytime.h" int main() { DATETYPE d; TIMETYPE t; void *dp; char *error; puts("动态链接库应用示范"); getdate(&d); /* 调用此共享函数 */ printf("当前日期: %04d-%02d-%02d\n",d.year,d.mon,d.day); gettime(&t); /* 调用此共享函数 */ printf("当前时间: %02d:%02d:%02d\n",t.hour,t.min,t.sec); gqlass gq; printf("before setneid gq.ineid=%d\n",gq.ineid); gq.setneid(123); printf("after setneid gq.ineid=%d\n",gq.ineid); return 0; } |