• VS2010环境下用ANSI C创建DLL和使用方法(转)


    源:VS2010环境下用ANSI C创建DLL和使用方法

    1. 创建DLL工程
    1.1 启动VS 2010
    1.2 创建一个dll工程。
         操作:a.文件->新建->项目->Win32控制台应用程序.
               b.输入工程名称,这里我们用dll,点击确定按钮.
           c.点击下一步,在"应用程序设置界面设置"勾选DLL(D)项和空项目,点击完成按钮.
           d.视图->解决方案资源管理器,右键点击"头文件",添加->新建项,这里咱们用dll.h
             右键点击"源文件",添加->新建项,这里我们添加dll.c,到此dll工程搭建完毕.
    1.3 dll.h的内容如下
    #ifndef AXLPLUGIN_H
    #define AXLPLUGIN_H
    /**/
    #ifdef _WINDOWS
    #define DLL_DECLARE __declspec(dllexport)
    #else
    #define DLL_DECLARE
    #endif
    DLL_DECLARE int Min(int a, int b);
    /* 把所有的函数声明都列在这里 */
    #endif
    1.4 dll.c的内容如下
    #include "dll.h"
    #include <stdio.h>
    /*根据需要添加相应的头文件*/
    DLL_DECLARE int Min(int a, int b)
    {
        if (a >= b) 
            return b;
        else 
            return a;
    }
    /* 把所有声明的函数都在这里实现*/
    2. DLL文件的使用
    2.1 试验证明dll.dll文件要和dll.lib以及dll.h文件一起使用
    2.2 新建一个测试用的"Win32应用程序"
         操作:a.文件->新建->项目->Win32控制台应用程序.
               b.输入工程名称,这里我们用test_dll,点击确定按钮.
           c.点击下一步,在"应用程序设置界面设置"控制台应用程序""空项目",点击完成按钮.
           d.将工程dll目录里的dll.h/dll.dll/dll.lib拷贝到工程test_dll目录里。
           e.视图->解决方案资源管理器,右键点击"头文件",添加->新建项,这里咱们用dll.h
             右键点击"源文件",添加->新建项,这里我们添加test_dll.c,右键点击“资源文件”,
             添加->"现有项",选择dll.lib,到此test_dll工程搭建完毕.
    2.3 编辑test_dll.c文件,内容如下
    #include "dll.h"
    #include <stdio.h>
    int main()
    {
        printf("Min(2, 4) = %d/n", Min(2, 4));
        printf("Min(5, 2) = %d/n", Min(5, 2));
        return 0;
    }
    2.4 dll和test_dll工程的目录结构
    2.4.1 dll工程目录结构
    ../dll/
    │  dll.sdf
    │  dll.sln
    │  dll_dir.txt
    ├─Debug
    │      dll.dll
    │      dll.exp
    │      dll.ilk
    │      dll.lib
    │      dll.pdb   
    ├─dll
    │  │  dll.cpp
    │  │  dll.h
    │  │  dll.vcxproj
    │  │  dll.vcxproj.filters
    │  │  dll.vcxproj.user 
    │  └─Debug
    │          cl.command.1.tlog
    │          CL.read.1.tlog
    │          CL.write.1.tlog
    │          dll.Build.CppClean.log
    │          dll.dll.embed.manifest
    │          dll.dll.embed.manifest.res
    │          dll.dll.intermediate.manifest
    │          dll.lastbuildstate
    │          dll.log
    │          dll.obj
    │          dll.write.1.tlog
    │          dll_manifest.rc
    │          link-cvtres.read.1.tlog
    │          link-cvtres.write.1.tlog
    │          link.2360-cvtres.read.1.tlog
    │          link.2360-cvtres.write.1.tlog
    │          link.2360.read.1.tlog
    │          link.2360.write.1.tlog
    │          link.command.1.tlog
    │          link.read.1.tlog
    │          link.write.1.tlog
    │          mt.command.1.tlog
    │          mt.read.1.tlog
    │          mt.write.1.tlog
    │          rc.command.1.tlog
    │          rc.read.1.tlog
    │          rc.write.1.tlog
    │          RCa02504
    │          vc100.idb
    │          vc100.pdb       
    └─ipch
        └─dll-75fa4624
                dll-129995a8.ipch
                
    2.4.2 test_dll工程的目录结构
    ../test_dll/
    │  test_dll.sdf
    │  test_dll.sln
    │  test_dll_dir.txt
    ├─Debug
    │      test_dll.exe
    │      test_dll.ilk
    │      test_dll.pdb      
    ├─ipch
    │  └─test_dll-eb5063a1
    │          test_dll-c06c53e7.ipch         
    └─test_dll
        │  dll.dll
        │  dll.h
        │  dll.lib
        │  test_dll.c
        │  test_dll.vcxproj
        │  test_dll.vcxproj.filters
        │  test_dll.vcxproj.user 
        └─Debug
                cl.command.1.tlog
                CL.read.1.tlog
                CL.write.1.tlog
                link-cvtres.read.1.tlog
                link-cvtres.write.1.tlog
                link.3004-cvtres.read.1.tlog
                link.3004-cvtres.write.1.tlog
                link.3004.read.1.tlog
                link.3004.write.1.tlog
                link.command.1.tlog
                link.read.1.tlog
                link.write.1.tlog
                mt.command.1.tlog
                mt.read.1.tlog
                mt.write.1.tlog
                rc.command.1.tlog
                rc.read.1.tlog
                rc.write.1.tlog
                test_dll.Build.CppClean.log
                test_dll.exe.embed.manifest
                test_dll.exe.embed.manifest.res
                test_dll.exe.intermediate.manifest
                test_dll.lastbuildstate
                test_dll.log
                test_dll.obj
                test_dll_manifest.rc
                vc100.idb
                vc100.pdb
                
  • 相关阅读:
    Benchmarking Apache Kafka, Apache Pulsar, and RabbitMQ: Which is the Fastest?
    Kafka实战:集群SSL加密认证和配置(最新版kafka-2.7.0)
    Postgresql 编译安装教程
    CentOS在线和离线安装PostgreSQL
    ubuntu apt-get update连不上dl.google.com解决方法
    ubuntu E: Sub-process /usr/bin/dpkg returned an error code (1)解决办法
    ubuntu apt-get更新出现W: GPG error: http://repo.mysql.com trusty InRelease
    hadoop3.2.2 ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes
    Hudi on flink v0.7.0 使用遇到的问题及解决办法
    RocksDB in Flink官方答疑:Using RocksDB State Backend in Apache Flink: When and How
  • 原文地址:https://www.cnblogs.com/LittleTiger/p/4549764.html
Copyright © 2020-2023  润新知