C/CPP在命令行中生成DLL文件
简单的写一个C调用DLL(动态链接库)的例子。
创建3个.c文件备用

test.c
1 #include <stdio.h>
2
3 //这里声明,表示来自dll文件。
4 extern int Add(int,int);
5 extern int Square(int);
6 extern int Power(int);
7 extern void PrintOddNum();
8 extern void printEvenNum();
9
10 //cl myDll.c /LD 编译myDll.c形成动态链接库文件
11 //cl test.c /link myDll.lib 链接dll文件的导入库生成可执行文件
12 //dumpbin myDll.dll /exports 查看dll库中的导出函数
13
14 int main()
15 {
16 int a=0;
17 int b=0;
18 int c=0;
19 scanf("%d %d", &a, &b);
20
21 c=Add(a, b);
22
23 printf("Hello World!\n");
24 printf("a:%d + b:%d = c:%d\n", a, b, c);
25
26 if(0 == c%2)
27 {
28 printEvenNum();
29 printf("c*c = %d\n", Square(c));
30 }
31 else
32 {
33 PrintOddNum();
34 printf("c*c*c = %d\n", Power(c));
35 }
36
37 return 0;
38 }
myDll.c
1 #include <stdio.h>
2
3 //__declspec微软C关键字 dllexport 表示将函数导出,并生成lib文件
4
5 __declspec(dllexport) int Add(int a, int b)
6 {
7 return a+b;
8 }
9
10 __declspec(dllexport) void PrintOddNum()
11 {
12 printf("This is an odd number!\n");
13 }
14
15 __declspec(dllexport) void printEvenNum()
16 {
17 printf("This is an even number!\n");
18 }
mathDll.c
1 __declspec(dllexport) int Square(int a)
2 {
3 return a*a;
4 }
5
6 __declspec(dllexport) int Power(int a)
7 {
8 return a*a*a;
9 }
编译 *Dll.c文件生成*Dll.dll和*Dll.lib文件
eg:cl myDll.c /LD


cl mathDll.c /LD 继续编译mathDll.c文件

链接动态链接库的导出库(*.lib)文件,生成可执行程序。
eg:cl test.c /link *.lib

执行可执行程序test.exe

这个例子相当简单,C语言萌新们快试试把。
C/CPP在命令行中生成DLL文件的更多相关文章
- 命令行中生成 md5、sha1、sha256 校验和
在测试过程中有时候需要对某个文件Hash值进行校验,如接口返回一个文件下载地址及hash值,那么除了对比平台端展示和接口下发是否一至,还有一个办法就是命令行使用相关命令 1.Window 注:我是在g ...
- Mac OSX 如何在命令行中生成 md5、sha1、sha256 校验和
计算 MD5 校验和 md5 /tmp/hello.txt 计算 SHA-1 校验和 shasum -a 1 /tmp/hello.txt 计算 SHA-256 校验和 shasum -a 256 / ...
- 关于matlab2014a中生成dll文件,打包成com组件出现的问题和解决方法
问题1:matlab2014a破解不完整,容易导致package打包失败 解决方法:1.下载破解文档:链接: http://pan.baidu.com/s/1eRJ4E2I 密码: 44th 2.下载 ...
- mac在命令行中打开某个文件夹
使用 open 命令,如打开 ~/Download/abc open ~/Download/abc
- JNI中使用cl命令生成DLL文件
问题描述: 在使用JNI调用DLL时,首先需要生成DLL文件 问题解决: (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注: cl. ...
- 在linux命令行中调试在OJ上的c++代码
gcc & g++现在是gnu中最主要和最流行的c & c++编译器 .g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c.这时候命令换做gcc即可. 编译器是根据gcc ...
- 如何利用.snk文件生成DLL文件中的Publickeytoken
1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...
- 在命令行中运行eclipse中创建的java项目
在命令行中运行eclipse中创建的java项目 博客分类: java相关 javaeclipse命令行 由于项目要求,需要对eclipse中的项目进行打包,似的可以在客户机上不装eclipse的情 ...
- 在 Linux 命令行中使用和执行 PHP 代码
PHP是一个开源服务器端脚本语言,最初这三个字母代表的是“Personal Home Page”,而现在则代表的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写.它是一 ...
- Mybatis上路_05-使用命令行自动生成【转】
http://my.oschina.net/vigiles/blog/125127 Mybatis上路_05-使用命令行自动生成 1人收藏此文章, 我要收藏 发表于1个月前(2013-04-24 ...
随机推荐
- 如何用Python对股票数据进行LSTM神经网络和XGboost机器学习预测分析(附源码和详细步骤),学会的小伙伴们说不定就成为炒股专家一夜暴富了
前言 最近调研了一下我做的项目受欢迎程度,大数据分析方向竟然排第一,尤其是这两年受疫情影响,大家都非常担心自家公司裁员或倒闭,都想着有没有其他副业搞搞或者炒炒股.投资点理财产品,未雨绸缪,所以不少小伙 ...
- MapReduce之简单的数据清洗----课堂测试
今天的课堂测试第一步是做简单的数据清洗,直到现在我才知道只是把文本文件的数据改成相应的格式,而我做的一直是寻找一条数据,并转换成相应的格式,但是呢,我感觉还是很高兴的,虽然没有按时完成任务,但也学到了 ...
- 桌面应用自动化winappdriver
桌面应用自动化winappdriver 关于winappdriver 介绍 WinAppDriver全称是Windows Application Driver,它提供了一些API,使得用户可以像sel ...
- 【入门排坑】Windows之间使用OpenSSH的ssh免密登录,排坑
安装 安装OpenSSH 需要安装OpenSSH客户端和服务器,win10自带客户端,我们安装服务器即可. 设置 -- 应用 -- 可选功能 -- 添加 -- 添加 OpenSSH 服务器 配置 公钥 ...
- python标准模块之subprocess
subprocess --- 子进程管理 源代码: Lib/subprocess.py 写在前面: 感觉也就这俩有用: subprocess.run() subprocess.Popen() w下 ...
- Redis(八)redis新功能
redis6新功能 1 ACL Redis ACL是AccessControlList(访问控制表)的缩写,该功能允许根据可以执行的命令和访问的键来限制某些连接. 2 基本命令 acl help &g ...
- NLP入门1——李宏毅网课笔记
近日因为项目需要,开始恶补预习NLP的相关知识.以前也看过两本相关书籍,但是都十分浅显.这次准备详细的学一下并记录. 李宏毅老师的网课是 Deep Learning for Human Languag ...
- ASP.NET Core Web API 流式返回,逐字显示
Websocket.SSE(Server-Sent Events)和长轮询(Long Polling)都是用于网页和服务端通信的技术. Websocket是一种全双工通信协议,能够实现客户端和服务端之 ...
- 3.2 构造器、this、包机制、访问修饰符、封装
构造器 构造器:在实例化的一个对象的时候会给对象赋予初始值,因此我们可以通过修改构造器,来改变对象的初始值,构造器是完成对象的初始化,并不是创建对象 我们也可以创建多个构造器实现不同的初始化,即构造器 ...
- S3 对象重命名
本文所述操作适用于兼容 S3 协议的所有存储框架,包括 AWS S3.Aliyun OSS.MinIO.Ceph 等. 不知为何,截止目前,S3 协议并不包含对象重命名的接口.如果有重命名对象的需求, ...