使用mingw制作dll文件

  • 安装mingw

  • 准备math.c文件

    //math.c
    #include<stdio.h>
    int add(int a,int b){
    return a+b;
    }
    int sub(int a,int b){
    return a-b;
    }
    int mul(int a,int b){
    return a*b;
    }
    int div(int a,int b){
    return a/b;
    }
  • 制作dll

    gcc math.c -shared -o math.dll -Wl,--out-implib,math.lib

    生成 math.dll、math.lib

  • 验证dll

    • 编写加载dll文件的代码

       #include<stdio.h>
      #include <windows.h>
      typedef int (*AddFunc)(int ,int);
      typedef int (*SubFunc)(int ,int);
      typedef int (*MulFunc)(int ,int);
      typedef int (*DivFunc)(int ,int);
      int main(void)
      {
      int a=10,b=2;
      HMODULE hDll = LoadLibrary("math.dll");
      if (hDll != NULL)
      {
      AddFunc add = (AddFunc)GetProcAddress(hDll, "add");
      SubFunc sub = (SubFunc)GetProcAddress(hDll, "sub");
      MulFunc mul = (MulFunc)GetProcAddress(hDll, "mul");
      DivFunc div = (DivFunc)GetProcAddress(hDll, "div"); if (add != NULL)
      printf("a+b=%d\n",add(a,b));
      if (sub != NULL)
      printf("a-b=%d\n",sub(a,b));
      if (mul != NULL)
      printf("a*b=%d\n",mul(a,b));
      if (div != NULL)
      printf("a/b=%d\n",div(a,b)); FreeLibrary(hDll);
      }
      }
    • 编译 gcc loaddll_dynamic_show.c -o loaddll_dynamic_show.exe

    • 运行 loaddll_dynamic_show.exe

    • 结果

      a+b=12
      a-b=8
      a*b=20
      a/b=5

使用mingw制作dll文件的更多相关文章

  1. Visual C# 制作DLL文件

    一.制作.dll1.首先创建一个新类库工程文件  文件->新建->项目->Visual C#->类库.填入工程文件名称,并且选择文件要存放的目录. 2.工程文件 将Class1 ...

  2. 制作和unity调用动态链接库dll文件

    首先用vc建立一个dll工程 然后在里面建立一个testunity.h文件.内容如下 1 extern "C" int _declspec(dllexport)testunity( ...

  3. c# 制作自定义控件并生成dll文件旷展到其他项目使用

    1.新建项目,同时添加一个类库,然后在类库里面定义自己的控件:完毕生成项目,然后在类库的bin目录下就自动生成了这个自定义控件的dll文件. 2.在需要使用这个自定义控件的项目里,直接ctrl+c,c ...

  4. MSVC vs. MinGW 之dll玩转攻略手记【转

    一份粗糙的研究记录,有待补完和整理. MinGW:c -> o           gcc -c a.cc -> exe         gcc a.c libs.o -o a.exe ( ...

  5. 制作dll自动注册工具

    记录一个简单的dll自动注册工具制作:主要用到的是DllRegisterServer()方法,其实我们平常注册dll文件内部都会调用这个方法. 这里我就直接写在主程序里面了,需要注意的地方也直接在代码 ...

  6. NSIS使用教程(安装包制作安装文件教程,如何封装打包文件) 中文版

    nsis中文版(Nullsoft Scriptable Install System)是一个专业的开源的可以用来封闭Windows程序的实用工具,是一个开源的 Windows 系统下安装程序制作程序. ...

  7. Delphi 使用之dll文件生成与调用

    DLL是Dynamic-Link Libraries(动态链接库)的缩写,库里面是一些可执行的模块以及资源(如位图.图标等).可以认为DLL和EXE基本上是一回事,只是DLL不能直接执行,而必须由应用 ...

  8. Delphi制作DLL

    一.开使你的第一个DLL专案 1.File->Close all->File->New﹝DLL﹞ 代码: //自动产生Code如下 library Project2; //这有段废话 ...

  9. 用C#制作PDF文件全攻略

    用C#制作PDF文件全攻略 目  录 前    言... 3 第一部分 iText的简单应用... 4 第一章 创建一个Document 4 第一步 创建一个Document实例:... 5 第二步 ...

随机推荐

  1. CodeForcesGym 100502D Dice Game

    Dice Game Time Limit: 1000ms Memory Limit: 524288KB This problem will be judged on CodeForcesGym. Or ...

  2. MongoDB + node-mongoskin简单演示样例

    特点 无模式 MongoDB 中的每一条文档,都是一个 JSON 对象,因此你无需提前定义一个集合的结构,集合中的每一个文档也能够有不同的结构. 异步写入 MongoDB 默认全部的写操作都是『不安全 ...

  3. ubuntu14.04-安装flash

    最近打开搜狐等在线视频,都提示我说flash没有安装,然后就点击安装.进入安装界面 如下所示 然后我们选择版本.之前我一直都是选择版本APT,因为里面标注的是适用于ubuntu10.04+,这时候它会 ...

  4. ElasticSearch、Kibana Web管理

    ElasticSearch的Web管理 http://localhost:9200/ http://localhost:9200/cluster/health?pretty http://localh ...

  5. 码农Coding Peasant(s):一般指从事没有发展前景的软件开发职位

    码农Coding Peasant(s):一般指从事没有发展前景的软件开发职位,这种职位只能强化职业者在单方面的技术领域技能,学不到新技术,同时也是部分从事软件开发工作人员的一个自嘲的称号.一个依靠写代 ...

  6. IntelliJ IDEA如何导入maven结构的web工程

    第一步:打开一个现有(也可以不打开,直接用import选择Maven类型)的IntelliJ IDEA工程,点击菜单的"File"->"new"-> ...

  7. ZOJ Problem Set - 3819Average Score

    ZOJ Problem Set - 3819Average Score 题目链接 题目大意:给你两个班的的学生的分数(A,B班).A班有一个学生的分数没有给出. 如今要求你给出这个学生分数的上下限.使 ...

  8. menu-代码添加以及add方法参数意义

    今天需要给一个menu动态添加一个item,先把方法记录如下 @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(Me ...

  9. php实现遍历文件目录

    php实现遍历文件目录 一.总结 1.熟悉简单:很经典的例子,多看,然后发现熟悉了很简单 二.php实现遍历目录 php实现遍历目录 代码一: //遍历目录 function iteral($path ...

  10. if 的理解

    1. if 实现集合的划分 比如著名的 Prim 算法(最小生成树),从某一确定的点出发,每次新加入的点,都是在已访问过的结点(u∈U)和未访问过(v∈V−U)的结点之间的边.这里的未被访问(V−U) ...