博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在linux和windows用c++编写c接口的动态库
阅读量:4974 次
发布时间:2019-06-12

本文共 1478 字,大约阅读时间需要 4 分钟。

linux

动态的头文件api.h

#ifndef _API_H#define _API_H#ifdef DLL_IMPLEMENT#define DLL_EXPORT extern "C"#else#define DLL_EXPORT#endifDLL_EXPORT int mysum(int a, int b);#endif // _API_H

动态库的源文件api.cpp

#define DLL_IMPLEMENT#include "api.h"#include 
DLL_EXPORT int mysum(int a, int b){ std::cout << "This (mysum) is a c++ function." << std::endl; return a + b;}

调用动态库的测试代码main.c

#include 
#include "api.h"int main(){ int sum = mysum(8, 3); printf("The sum is %d\n", sum);}

下面在命令行测试:

g++ -shared -fPIC -o libmyapi.so api.cpp    #生成动态库gcc main.c -o a.out -L. -lmyapi    #链接动态库生成执行文件ln -s /path/to/libmyapi.so /usr/lib/libmyapi.so    #在系统的动态库搜索路径建立软连接ldconfig    #让系统重新搜索一遍动态库./a.out    #执行,下面是输出     This (mysum) is a c++ function.     The sum is 11

windows

动态的头文件api.h

#ifndef _API_H#define _API_H#ifdef DLL_IMPLEMENT#define DLL_EXPORT extern "C" __declspec(dllexport)#else#define DLL_EXPORT extern "C" __declspec(dllimport)#endif#define MYAPI __stdcallDLL_EXPORT int MYAPI mysum(int a, int b);#endif // _API_H

动态库的源文件api.cpp

#define DLL_IMPLEMENT#include "api.h"#include 
int MYAPI mysum(int a, int b){ std::cout << "This (mysum) is a c++ function." << std::endl; return a + b;}

调用动态库的测试代码main.c

#include 
#include "api.h"#pragma comment(lib, "./myapi.lib")int main(){ int sum = mysum(8, 3); printf("The sum is %d\n", sum);}

windows在visual studio中测试即可

 

over

转载于:https://www.cnblogs.com/toSeek/p/8676241.html

你可能感兴趣的文章
欧拉函数
查看>>
关于SQL2008 “不允许保存更改。您所做的更改要求删除并重新创建以下表。您对无法重新创建的标进行了更改或者启用了‘阻止保存要求重新创建表的更改’” 解决方案...
查看>>
php文件操作(上传文件)2
查看>>
linux内核驱动模型
查看>>
给WebApp加一个“壳”,实现Andriod系统添加到桌面
查看>>
js 浏览器复制功能
查看>>
数据库总编
查看>>
redis 字符串(string)函数
查看>>
杭州电 1372 Knight Moves(全站搜索模板称号)
查看>>
POJ--3268--Silver Cow Party【SPFA+邻接表】
查看>>
c语言的几个简单memo
查看>>
C#的默认访问权限
查看>>
selenium下打开Chrome报错解决
查看>>
红酒初识
查看>>
BNUOJ 5629 胜利大逃亡(续)
查看>>
HDU-1150 Machine Schedule(二分图、匈牙利)
查看>>
Python assert 断言函数
查看>>
Android 学习笔记之ContentProvider实现数据共享....
查看>>
35)PHP,关于PHP和html
查看>>
区块链到底是什么?
查看>>