当前位置: 技术问答>linux和unix
菜鸟求助Linux C++高手
来源: 互联网 发布时间:2017-01-25
本文导语: 现在需要使用共享对象实现通过配置文件生成类对象的功能 , 写了一些代码大家看一下 ======================getstr.h============================= #ifndef __GET_STR_H__ #define __GET_STR_H__ class Obj { public: int b; char *a; Obj(); int...
现在需要使用共享对象实现通过配置文件生成类对象的功能 , 写了一些代码大家看一下
======================getstr.h=============================
#ifndef __GET_STR_H__
#define __GET_STR_H__
class Obj
{
public:
int b;
char *a;
Obj();
int c();
};
#ifdef SHARED
typedef bool (*GetStr)(char* str,int len);
typedef Obj* (*GetObj)();
#else
extern "C"
{
bool GetStr(char* str,int len);
Obj* GetObj();
}
#endif
#endif
==========================================================
========================getstr.cpp=================================
#include"string.h"
#include"getstr.h"
#include"stdio.h"
Obj::Obj()
{
a = new char[100];
b = 100;
printf("indl");
}
int Obj::c()
{
a[0] = '!';
a[1] = 0;
return 20;
}
extern "C"
{
bool GetStr(char* str,int len)
{
if(len b);
obj->c(); 这里报错了
printf("obj.a is %sn",obj->a);
printf("obj.b is %dn",obj->b);
printf("current string: %s n",test);
dlclose(dp);
return 0;
}
=============================Makefile==========================================
all: libMyShareObject.so.1.0 dy
CC = g++
INCLUDE = -I/usr/include
libMyShareObject.so.1.0: getstr.o
$(CC) -o libMyShareObject.so.1.0 getstr.o -shared
getstr.o: getstr.cpp getstr.h
$(CC) $(INCLUDE) -c getstr.cpp -shared
dy: dy.cpp getstr.h
$(CC) -I. -rdynamic -s -o dy dy.cpp -ldl
chmod +x dy
clean:
rm *.o *~
remove:
rm dy libMyShareObject.so.1.0
|
export LD_LIBRARY_PATH了?