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 ...
随机推荐
- window.onload / onscroll/onresize 事件
onload当文档加载完成后执行一些操作 window.onload = function(){ console.log("页面加载完成") } onscroll当页面发生滚动时执 ...
- GLM:通用语言模型
ChatGPT已经火了一段时间了,国内也出现了一些平替,其中比较容易使用的是ChatGLM-6B:https://github.com/THUDM/ChatGLM-6B ,主要是能够让我们基于单卡自己 ...
- windows下使用pytorch进行单机多卡分布式训练
现在有四张卡,但是部署在windows10系统上,想尝试下在windows上使用单机多卡进行分布式训练,网上找了一圈硬是没找到相关的文章.以下是踩坑过程. 首先,pytorch的版本必须是大于1.7, ...
- 搭建Hadoop2.7.2和Hive2.3.3以及Spark3.1.2
Hadoop 简介 Hadoop是一个用Java编写的Apache开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集.Hadoop框架工作的应用程序在跨计算机集群提供分布式存储和计算的环 ...
- ILLA Cloud: 调用 Hugging Face Inference Endpoints,开启大模型世界之门
一个月前,我们 宣布了与 ILLA Cloud 与达成的合作,ILLA Cloud 正式支持集成 Hugging Face Hub 上的 AI 模型库和其他相关功能. 今天,我们为大家带来 ILLA ...
- Java:一篇学好设计模式
什么是设计模式 简单理解,设计模式是前人多年写代码踩坑总结出来的优秀代码攻略,目的是减少大量无用代码,让项目更好维护 七大设计原则 接下来要讲的23种设计模式,但遵循下面的七大原则: 单一职责原则 2 ...
- ES日志存储以及备份压缩到COS
导语 为了满足用户日益增长的日志存储大小,不影响用户的写入和查询性能.满足不同用户写入流量.同时用户日志长期保存,日志存储比较占用空间和成本.ES集群规格配置高,消耗资源和成本.我们基于Go语言设计了 ...
- 【FAQ】关于JavaScript版本的华为地图服务Map的点击事件与Marker的点击事件存在冲突的解决方案
一. 问题描述 创建地图对象,并添加marker标记,对map和marker均添加了点击事件: <body> <script> function initMap() { // ...
- 明解STM32—GPIO应用设计篇之API函数及配置使用技巧
一.前言 本篇开始对STM32的GPIO在实际开发设计中的使用配置和技巧进行探讨,可以先去回顾下之前介绍的GPIO的相关理论基础知识包括基本结构,工作模式和寄存器原理. 了解过STM32的GPIO相关 ...
- linux安装tomcat,mysql
环境:centos7.6 ssh连接工具:tabby 安装tomcat 创建目录 mkdir /opt/tomcat 获取tomcat: 1.自己百度下载 2.我这里提供百度网盘 链接:https:/ ...