如何用c语言调用c++做成的动态链接库

原创 2005年05月26日 20:51:00

链接库头文件:
//head.h
class A
{
        public:
        A();
        virtual ~A();
        int gt();
        int pt();
private:
        int s;
};

.cpp
//firstso.cpp
#include <iostream>
#include "head.h"

A::A(){}
A::~A(){}
int A::gt()
        {
s=10;
                }
int A::pt()
        {
       
                std::cout<<s<<std::endl;
        }
编译命令如下:
g++ -shared -o libmy.so firstso.cpp
这时候生成libmy.so文件,将其拷贝到系统库里面:/usr/lib/
进行二次封装:
.cpp
//secso.cpp
#include <iostream>
#include "head.h"
extern "C"

{

int f();

int f()
{
A a;
a.gt();
a.pt();
return 0;
}

}
编译命令:
gcc -shared -o sec.so secso.cpp -L. -lmy
这时候生成第二个.so文件,此时库从一个类变成了一个c的接口.
拷贝到/usr/lib
下面开始调用:
//test.c
#include "stdio.h"
#include "dlfcn.h"

#define SOFILE "sec.so"
int (*f)();
int main()
{
void *dp;
dp=dlopen(SOFILE,RTLD_LAZY);
f=dlsym(dp,"f");
f();
return 0;
}
编译命令如下:
gcc -rdynamic -s -o myapp test.c
运行Z$./myapp
10
$

相关文章推荐

Linux C语言调用C++动态链接库

如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明,那么你如何用c调用呢,别着急,本文通过一个小小的例子,让你能够很爽的搞定.      链接库头文件: //head.h class...

Linux C语言调用C++动态链接库-改

如果你有一个c++做的动态链接库.so文件,而你只有一些相关类的声明, 那么你如何用c调用呢,别着急,本文通过一个小小的例子,让你能够很爽的搞定.      一、编译生成一个供测试使用的C++动态库:...

【C/C++开发】C语言 DLL(动态链接库)中申请动态内存释放的问题

参考:首先,声明一点,凡是使用malloc之类命令动态申请的内存,必须进行释放操作,否则就会发生内存泄漏问题。 DLL中申请的内存释放,如果没有做过,很可能会认为是直接在调用程序中释放就可以了,...

JNA调用C语言动态链接库学习实践总结

最新因为项目需要,学习了一下JNA框架,在这里记录一下学习和使用心得,给大家分享,希望能帮助新手。 本文主要讲解如何使用JNA框架轻松调用C语言动态链接库,如何使用JNA模拟C语言参数(例如数组、指针...
  • zht666
  • zht666
  • 2014年04月02日 11:54
  • 11485

JNA调用C语言动态链接库学习实践总结

最新因为项目需要,学习了一下JNA框架,在这里记录一下学习和使用心得,给大家分享,希望能帮助新手。 本文主要讲解如何使用JNA框架轻松调用C语言动态链接库,如何使用JNA模拟C语言参数(例如数组...

JNA调用C语言动态链接库

最新因为项目需要,学习了一下JNA框架,在这里记录一下学习和使用心得,给大家分享,希望能帮助新手。 本文主要讲解如何使用JNA框架轻松调用C语言动态链接库,如何使用JNA模拟C语言参数(例如数组、指...

JNA调用C语言动态链接库学习实践总结(指针模拟)

最新因为项目需要,学习了一下JNA框架,在这里记录一下学习和使用心得,给大家分享,希望能帮助新手。 本文主要讲解如何使用JNA框架轻松调用C语言动态链接库,如何使用JNA模拟C语言参数(例如数组、指...

linux下 java JNI调用C语言动态链接库

今天花了至少3个小时跑这个java调c的动态链接库的Hello,native world的程序。把所有犯的错误和要点总结一下!1 java 中 c语言函数的声明    public native st...

linux下 java JNI调用C语言动态链接库(非常使用!!非常经典!!)

comes from: http://watershitter.iteye.com/blog/477615 1 java 中 c语言函数的声明      public native sta...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何用c语言调用c++做成的动态链接库
举报原因:
原因补充:

(最多只允许输入30个字)