动态调用c++动态链接库
2007-11-08 18:34
429 查看
class Base
{
public:
virtual ~Base() {}
virtual void show() = 0;
};
typedef Base* create_obj();
typedef void destroy_obj(Base*);
#include "myso01.h"
#include
<iostream>
class ABC : public Base
{
public:
void show();
};
void ABC::show()
{
std::cout << "ABC" << std::endl;
}
extern "C" Base* create()
{
return new ABC;
}
extern "C" void destroy(Base* p)
{
delete p;
}
#include "myso01.h"
#include<iostream>
#include<dlfcn.h>
int main()
{
void* p_lib = dlopen("./myso01.so", RTLD_LAZY);
if (!p_lib)
{
std::cout << dlerror() << std::endl;
return 1;
}
create_obj* create_abc = (create_obj*)dlsym(p_lib, "create");
char* dlsym_error = dlerror();
if (dlsym_error)
{
std::cout << dlsym_error << std::endl;
return 1;
}
destroy_obj* destroy_abc = (destroy_obj*)dlsym(p_lib, "destroy");
dlsym_error = dlerror();
if (dlsym_error)
{
std::cout << dlsym_error << std::endl;
return 1;
}
Base* p_abc = create_abc();
p_abc->show();
destroy_abc(p_abc);
dlclose(p_lib);
return 0;
}
{
public:
virtual ~Base() {}
virtual void show() = 0;
};
typedef Base* create_obj();
typedef void destroy_obj(Base*);
#include "myso01.h"
#include
<iostream>
class ABC : public Base
{
public:
void show();
};
void ABC::show()
{
std::cout << "ABC" << std::endl;
}
extern "C" Base* create()
{
return new ABC;
}
extern "C" void destroy(Base* p)
{
delete p;
}
#include "myso01.h"
#include<iostream>
#include<dlfcn.h>
int main()
{
void* p_lib = dlopen("./myso01.so", RTLD_LAZY);
if (!p_lib)
{
std::cout << dlerror() << std::endl;
return 1;
}
create_obj* create_abc = (create_obj*)dlsym(p_lib, "create");
char* dlsym_error = dlerror();
if (dlsym_error)
{
std::cout << dlsym_error << std::endl;
return 1;
}
destroy_obj* destroy_abc = (destroy_obj*)dlsym(p_lib, "destroy");
dlsym_error = dlerror();
if (dlsym_error)
{
std::cout << dlsym_error << std::endl;
return 1;
}
Base* p_abc = create_abc();
p_abc->show();
destroy_abc(p_abc);
dlclose(p_lib);
return 0;
}
相关文章推荐
- C# 中静态调用C++动态链接
- C++编写动态链接库供VFP调用
- C函数的DLL,C++动态调用。
- C++基础:动态链接库调用方法总结
- python 调用c++ 动态链接库
- Linux下c++通过动态链接库调用类
- Java调用c++动态链接库用的 JNI转换接口
- C/C++动态链接库dll创建与调用
- C++动态链接库的两种调用方式
- [转]关于C与C++中互相调用动态链接库的问题
- C/C++中动态链接库的创建和调用
- 如何用c语言调用c++做成的动态链接库
- C++调用动态链接库
- 【C++】linux下CMake生成动态链接库,g++包含生成动态链接库
- C++调用DLL有两种方法——静态调用和动态调用
- C/C++动态链接库的创建和使用,显式调用
- html使用js动态调用cgi(C++)并传参
- 一次软件工程作业:关于C与C++中互相调用动态链接库的问题
- Python调用C/C++动态链接库的方法详解
- 关于C#调用C++动态库中的内存对齐的讲解