简单的写一个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文件的更多相关文章

  1. 命令行中生成 md5、sha1、sha256 校验和

    在测试过程中有时候需要对某个文件Hash值进行校验,如接口返回一个文件下载地址及hash值,那么除了对比平台端展示和接口下发是否一至,还有一个办法就是命令行使用相关命令 1.Window 注:我是在g ...

  2. Mac OSX 如何在命令行中生成 md5、sha1、sha256 校验和

    计算 MD5 校验和 md5 /tmp/hello.txt 计算 SHA-1 校验和 shasum -a 1 /tmp/hello.txt 计算 SHA-256 校验和 shasum -a 256 / ...

  3. 关于matlab2014a中生成dll文件,打包成com组件出现的问题和解决方法

    问题1:matlab2014a破解不完整,容易导致package打包失败 解决方法:1.下载破解文档:链接: http://pan.baidu.com/s/1eRJ4E2I 密码: 44th 2.下载 ...

  4. mac在命令行中打开某个文件夹

    使用 open 命令,如打开 ~/Download/abc open ~/Download/abc

  5. JNI中使用cl命令生成DLL文件

    问题描述:     在使用JNI调用DLL时,首先需要生成DLL文件 问题解决:     (1)现在使用VS2008的cl.exe程序,生成DLL文件 (1.1)cl.exe环境搭建 注:   cl. ...

  6. 在linux命令行中调试在OJ上的c++代码

    gcc & g++现在是gnu中最主要和最流行的c & c++编译器 .g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c.这时候命令换做gcc即可. 编译器是根据gcc ...

  7. 如何利用.snk文件生成DLL文件中的Publickeytoken

    1.在该路径下C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin查找是否有sn.exe. 没有的话,从网上下载,注意需要的版本. 2.打开c ...

  8. 在命令行中运行eclipse中创建的java项目

    在命令行中运行eclipse中创建的java项目 博客分类: java相关 javaeclipse命令行  由于项目要求,需要对eclipse中的项目进行打包,似的可以在客户机上不装eclipse的情 ...

  9. 在 Linux 命令行中使用和执行 PHP 代码

    PHP是一个开源服务器端脚本语言,最初这三个字母代表的是“Personal Home Page”,而现在则代表的是“PHP:Hypertext Preprocessor”,它是个递归首字母缩写.它是一 ...

  10. Mybatis上路_05-使用命令行自动生成【转】

    http://my.oschina.net/vigiles/blog/125127 Mybatis上路_05-使用命令行自动生成   1人收藏此文章, 我要收藏 发表于1个月前(2013-04-24 ...

随机推荐

  1. ZGC 最新一代垃圾回收器[NO]

    ​ZGC(The Z Garbage Collector)是JDK 11中推出的一款低延迟垃圾回收器,ZGC可以说源自于 Azul System 公司开发的C4收集器[基本不用调优]它的设计目标包括: ...

  2. instanceof 的原理

    涉及面试题: instanceof 的原理是什么? instanceof 可以正确的判断对象的类型,因为内部机制是通过判断对象的原型链中是不是 能找到类型的 prototype 实现一下 instan ...

  3. react组件之非受控组件和高阶组件

    非受控组件 受控组件和非受控组件的区别 ----- value import React, { Component } from 'react' export default class extend ...

  4. CTFSHOW-Reverse-刷题记录

    re2 打开初步分析为32位程序,无壳,拖入IDA32分析 找到关键行47-50,分析得出各函数内部的基本作用如图所示 首先进入分析输入后的处理 可以很明显看出,是对输入的字符串进行处理后再操作,因此 ...

  5. [整理] FFmpeg官方文档树

    扫了一遍官方文档,整理张官文树. 当然还有很多细节,可以慢慢沿着树根填,有需要可以联系我要ProcessON源文件,我尽量给个最新的出来. 官文 : http://ffmpeg.org/documen ...

  6. Django后端 服务器找不到template(路径问题)

    Django后端 服务器找不到template(路径问题) 该代码在本地跑没有任何问题, 但是上传到服务器上报错找不到模板或者模板不存在. 看网页最下方报错(一定要看报错!!)显示路径有问题 问题原因 ...

  7. Github美化日记 - 又菜又爱玩

    Github美化日记 - 又菜又爱玩 一.咱就说 无论是技术大牛, 或者是技术小菜, 都希望有一个好看的Github首页吧!(快说你想要! ![iShot_2023-04-05_18.58.32.mi ...

  8. Mybatis的整体理解

    I有关于我的对ybatis的设想: 简单总结-下有关于我对wybat is的架构理解: 总体分为三个层面: 1.对外接口API 2.MapStatement数据处理 3.执行及其数据存储 两个主要的对 ...

  9. 飞桨paddlespeech语音唤醒推理C实现

    上篇(飞桨paddlespeech 语音唤醒初探)初探了paddlespeech下的语音唤醒方案,通过调试也搞清楚了里面的细节.因为是python 下的,不能直接部署,要想在嵌入式上部署需要有C下的推 ...

  10. Elasticsearch搜索功能的实现(五)-- 实战

    实战环境 elastic search 8.5.0 + kibna 8.5.0 + springboot 3.0.2 + spring data elasticsearch 5.0.2 + jdk 1 ...