• 使用mingw制作dll文件


    使用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
        ",add(a,b));
                     if (sub != NULL)
                        printf("a-b=%d
        ",sub(a,b));
                     if (mul != NULL)
                        printf("a*b=%d
        ",mul(a,b));
                     if (div != NULL)
                        printf("a/b=%d
        ",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
        
  • 相关阅读:
    Ubuntu 18.04 LTS 启用BBR
    MySQL with JDBC <一>
    HTML 实录 <一>
    Nginx CloudFlare 客户端真实IP
    Ubuntu 16.04 释放升级到 18.04 后, man: command exited with status 4
    JSP 从入门到精通 <一>
    Nginx URL重写
    JavaScript 修改 CSS 伪类属性
    i-83.net quadhost子产品
    HTML 重定向 页面跳转
  • 原文地址:https://www.cnblogs.com/tonghaolang/p/9253995.html
Copyright © 2020-2023  润新知