当前位置:  技术问答>linux和unix

用C++写动态库问题

    来源: 互联网  发布时间:2015-12-19

    本文导语:  从网上找了一个动态库示例程序,包含一个头文件datetime.h和两个源文件gettime.c,getdate.c,只是原来是.c的,生成动态库后能够正常调用,但我改成了.cpp后就不行了.请问为什么 头文件datetime.h定义了两个结构TIMETYPE和DATETYPE /* ...

从网上找了一个动态库示例程序,包含一个头文件datetime.h和两个源文件gettime.c,getdate.c,只是原来是.c的,生成动态库后能够正常调用,但我改成了.cpp后就不行了.请问为什么
头文件datetime.h定义了两个结构TIMETYPE和DATETYPE
/* 日期结构 */
typedef struct
{
 int    year;
 int    mon;
 int    day;
}DATETYPE;

/* 时间结构 */
typedef struct
{
 char   hour;
 char   min;
 char   sec;
}TIMETYPE;

/* gettime.cpp */
#include "time.h"
#include "datetime.h"
int gettime(TIMETYPE *t)
{
 long ti;
 struct tm *tm;
# makefile : 纵横软件制作中心雨亦奇编写, 2001-06-28.
 time(&ti);
 tm=localtime(&ti);
 t->hour=tm->tm_hour;
 t->min=tm->tm_min;
 t->sec=tm->tm_sec;
}

/* getdate.cpp */
#include "time.h"
#include "datetime.h"
#include 

int getdate(DATETYPE *d)
{
 long ti;
 struct tm *tm;

 printf("xxn");
 time(&ti);
 tm=localtime(&ti);
 d->year=tm->tm_year+1900;
 d->mon=tm->tm_mon+1;
 d->day=tm->tm_mday;
 printf(" timen");
 return 0;
}

makefile文件如下

# makefile : 纵横软件制作中心雨亦奇编写, 2001-06-28.
all : my.so

SRC = getdate.cpp gettime.cpp

TGT = $(SRC:.cpp=.o)

$(SRC) : datetime.h
@touch $@

%.o : %.cpp
g++ -c $?

# 动态函数库(my.so)生成
my.so : $(TGT)
cc -shared -o my.so $(TGT)
clean:
rm my.so $(TGT)

|
将动态库中的getdate与gettime全部声明成extern "C"形式(函数定义时也要如此声明),在调用时也要进行这样的声明,可能是因为dlopen、dlsym仅支持C语言接口,而不支持C++接口

|
你的.o文件是用g++编绎成的,而链接成动态库的时候,用的是cc.

一般默认cc是gcc的软链,改成用g++看看吧.

|
知道有unix编码和dos编码区别吗?
sco unix上还有个命令转换两种文件格式的。

|

    
 
 

您可能感兴趣的文章:

  • C++动态编译工具 ccbuild
  • 在linux下(c++),如何动态调用 动态库(.so)? 为什么我编译报错:undefined reference to "dlopen"
  • c程序调dlopen C++的动态库的问题,急!
  • linux下c++对长度不定的字符串要进行预先动态分配内存需要怎么做?
  • 请问:linux 下 如何在一个动态库(so文件)中到处 C++类?感激不尽!
  • C++实现动态分配const对象实例
  • C++中关于[]静态数组和new分配的动态数组的区别分析
  • linux下C++动态malloc申请内存出现问题,高人指点一下,在线
  • c++动态内存空间示例(自定义空间类型大小和空间长度)
  • AIX中用xlc是否能链接C++的动态库,需要添加什么参数?
  • 深入理解C++的动态绑定与静态绑定的应用详解
  • 想用C++在Linux下实现动态链接,以下是我的代码请帮忙参考,急!
  • C++的静态联编和动态联编详解
  • 用c++写动态库,其他模块怎么调用????分不够还可以加
  • LINUX环境C++动态链接库如何才能被C应用程序调用?急急!
  • 用C++ 类的形式设计 Linux动态链接库(.so 文件),出现了那个问题,在线等
  • C++对象的动态建立与释放详解
  • 用C++ 类的形式设计 Linux动态链接库(.so 文件),出现了那个问题,问问大家
  • 怎么调试unix动态库. iis7站长之家
  • C++动态数组类的封装实例
  • 可执行程序加载动态库 和 动态库加载动态库 的动态库初始化的问题
  • 动态加载动态库问题--在线等
  • 程序发布的问题(动态连接库的问题)
  • 最菜的问题—关于linux“动态库”的问题
  • 关于断线重拨和动态域名的问题
  • 关于动态库的问题,谢谢!
  • linux动态路由问题
  • 一个动态库的小问题,在线等~~~
  • 与动态库有关得问题!
  • Linux动态库编译问题
  • 【急】动态库问题请教
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 动态库调用动态库
  • Linux下c函数dlopen实现加载动态库so文件代码举例
  • linux动态链接库里全局变量和静态变量会导致动态库不可重入吗?
  • linux能否成为动态域名解析客户端的动态域名解析服务器?
  • 关于动态菜单项,注意,不是动态菜单(一定给分)
  • Linux下,怎么确定动态库的绝对位置(动态库里面确定)?
  • 为什么动态生成的图片,JSP不能动态的获得
  • 请问:能不能动态的运行时生成对象(动态定义对象), 要涉及到哪些技术, 反射,序列化...??
  • C#实现动态显示及动态移除图片方法
  • 静态库,动态库,静态链接和动态链接
  • JSP动态缓存 JimStoneCache
  • 怎么调试unix动态库.
  • 如何调用动态
  • 动态编译与静态编译驱动程式疑问?
  • 内核与动态(共享)库
  • Linux 动态库,静态库的一些疑惑
  • 动态库中的变量(全局和自动变量)在什么地方存储,内存在什么位置分配?
  • gdb调试动态链接库
  • Jquery动态控制鼠标位置(层的动态显示与隐藏动画)
  • 如何将动态可执行文件打包为静态


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3