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
            
时间: 2024-10-20 18:02:00

VS2010环境下用ANSI C创建DLL和使用方法(转)的相关文章

vs2010环境下生成dll文件

vs2010环境下生成dll文件 1,新建win32工程,选中DLL项目,如下图:2,分别添加头文件和cpp文件 #ifndef LIB_H#define LIB_Hextern "C" int _declspec(dllexport)add(int x,int y);    // 声明为C编译.链接方式的外部函数#endif #include "stdafx.h"int add(int x,int y){    return x+y;} 3,新建win32控制台工

libCURL开源库在VS2010环境下编译安装,配置详解

libCURL开源库在VS2010环境下编译安装,配置详解 转自:http://my.oschina.net/u/1420791/blog/198247 CURL开源库VS2010环境下编译安装,配置详解 一 准备 1.1 CURL官网下载地址:http://curl.haxx.se/download.html 1.2 找到源码包,我这里下载的是7.32.0版:http://curl.haxx.se/download/curl-7.32.0.zip 二 步骤 2.1 打开curl-7.32.0\

Oracle 11g 环境下,利用utl_smtp创建发送邮件的存储过程

网上太多发邮件储存过程,我就不转发了,弄个简单的作为示例: create or replace procedure Send_mail(mail_body varchar2) is smtp_conn utl_smtp.connection; user_name varchar2(20) := utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw('[email protected]'))); user_pas

多jdk环境下安装多个tomcat冲突解决配置方法

                                                 文章转载自:[169IT-最新最全的IT资讯] 参考方案一: 一个服务器两个jdk,一个是jdk1.4,一个是jdk1.6. 同样tomcat版本是,tomcat5.0和tomcat6.0.都安装在一个服务器上. tomcat5.0匹配jdk1.4, tomcat6.0匹配jdk1.6, 1.首先指定tomcat匹配的jdk tomcat/bin目录下 catalina.bat setclasspa

Windows环境下使用Redis缓存工具的图文详细方法

网上找了两篇关于Redis的博客,记录下! Java 使用Redis缓存工具的图文详细方法 Windows环境下使用Redis缓存工具的图文详细方法

vc的环境变量配置和缺少mspdb60.dll的解决方法

vc的编译器是cl.exe,我们如果在vc中编译就不用配置环境,但是如果要在任何位置用命令提示符打开编译器cl.exe来编译程序,那么就要配置环境了. 下面我就讲讲vc的环境变量配置和缺少mspdb60.dll的解决方法. 1.环境变量配置:(配置的时候注意中英文的标点符号) 打开vc安装目录里面的这个路径:C:\Program Files (x86)\Microsoft Visual Studio\VC98,将里面的bin,include和lib这三个文件夹的路径配置到系统环境变量中的path

Oracle+ASM单机环境下,开启归档的最简单的方法

在ASM单机环境下,开启归档的最简单的方法.环境:oracle11g  11.2.0.4 登陆sqlplus[[email protected] ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 8 18:20:41 2017 Copyright (c) 1982, 2013, Oracle.  All rights reserved. Connected to an idle instance.

在linux环境下编译运行OpenCV程序的两种方法

原来以为在Ubuntu下安装好了OpenCV之后,自己写个简单的程序应该很容易吧,但是呢,就是为了编译一个简单的显示图片的程序我都快被弄崩溃了. 在谷歌和上StackOverFlow查看相关问题解答之后,我下面就介绍Command Line和CMake两种方式. 首先我先粘上我测试的代码吧,文件名为Test.c 1 #include <highgui.h> 2 3 int main(int argc,char ** argv) { 4 5 IplImage* img = cvLoadImage

Dynamics CRM2015 非基础语言环境下产品无法新建的问题的解决方法

该现象出现在2015版本上,之前从没注意过这个问题不知道以前的版本是否存在. 我的安装包的基础语言是中文,第一张图有添加产品的按钮,切换到英文环境下后就没有了,一开始以为是系统做了隐藏处理,但用工具查看home列表却发现没那3个按钮,那我们只能手工加了. 在home列表添加自定义按钮,然后分别添加Action和EnableRule,这个地方之所以用EnableRule是因为我们要用到CustomRule在js脚本中用代码进行控制(其他的displayrule和enablerule做不到这点),然