当前位置: 技术问答>linux和unix
用C++ 类的形式设计 Linux动态链接库(.so 文件),出现了那个问题,问问大家
来源: 互联网 发布时间:2015-10-11
本文导语: 用C++ 类的形式设计 Linux动态链接库(.so 文件),下面有我两个想法,但是都有问题..555 (大家可以给出简单一个成功的例子...willson_huang@126.com) 编译环境:gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1) 方法1: 把类作为参数传入...
用C++ 类的形式设计 Linux动态链接库(.so 文件),下面有我两个想法,但是都有问题..555
(大家可以给出简单一个成功的例子...willson_huang@126.com)
编译环境:gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1)
方法1: 把类作为参数传入 接口函数中去:
//----------------------- myclass.h 文件-----------------
#ifndef MYCLASS_H
#define MYCLASS_H
class myclass
{
public:
myclass(){}
~myclass() {}
public:
int sum(int a,int b);
private:
int _a;
int _b;
};
#ifdef SHARED
int (*sum)(myclass *my,int a,int b);
#else
int sum(myclass *my,int a,int b);
#endif
#endif // MYCLASS_H
//----------------------- myclass.cpp 文件-----------------
#include "myclass.h"
int myclass::sum(int a,int b)
{
int c = a + b;
return c;
}
int sum(myclass *my,int a,int b)
{
int c = my->sum(a,b);
return c;
}
//----------------------- my.cpp 测试文件 文件-----------------
#include
#include
#define SOFILE "./my.so"
#define SHARED
#include "myclass.h"
using namespace std;
int main(int argc, char *argv[])
{
myclass my;
void *dp;
char *error;
cout
(大家可以给出简单一个成功的例子...willson_huang@126.com)
编译环境:gcc version 3.4.3 20050227 (Red Hat 3.4.3-22.1)
方法1: 把类作为参数传入 接口函数中去:
//----------------------- myclass.h 文件-----------------
#ifndef MYCLASS_H
#define MYCLASS_H
class myclass
{
public:
myclass(){}
~myclass() {}
public:
int sum(int a,int b);
private:
int _a;
int _b;
};
#ifdef SHARED
int (*sum)(myclass *my,int a,int b);
#else
int sum(myclass *my,int a,int b);
#endif
#endif // MYCLASS_H
//----------------------- myclass.cpp 文件-----------------
#include "myclass.h"
int myclass::sum(int a,int b)
{
int c = a + b;
return c;
}
int sum(myclass *my,int a,int b)
{
int c = my->sum(a,b);
return c;
}
//----------------------- my.cpp 测试文件 文件-----------------
#include
#include
#define SOFILE "./my.so"
#define SHARED
#include "myclass.h"
using namespace std;
int main(int argc, char *argv[])
{
myclass my;
void *dp;
char *error;
cout