1、首先用vs2005建立一个 c++ 的dll 动态 链接 库 文件,这时,
// DllTest.cpp : 定义 DLL 应用程序的入口点。
//

#include "stdafx.h"
//#include "DllTest.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
           )
{
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif
这段代码会自动生成,
2、自己建一个DllTest.h的头文件,和DllTest.def的块声明文件。
其中头文件是为了声明内部函数使用。块声明主要是为了在dll编译成功后固定好方法名。别忘记添加#include "DllTest.h"
3、在DllTest.h中加入如下代码
#ifndef DllTest_01
#define  DllTest_01
#define EXPORT extern "C" __declspec(dllexport)
//两个参数做加法
EXPORT int _stdcall Add(int iNum1=0,int iNum2=0);
//两个参数做减法
EXPORT int _stdcall Subtraction(int iNum1=0,int iNum2=0,int iMethod=0);
#endif
4、在DllTest.def中加入如下代码
LIBRARY    "DllTest"
EXPORTS
  Add
  Subtraction
5、在DllTest.cpp中写好代码为
// DllTest.cpp : 定义 DLL 应用程序的入口点。
//

#include "stdafx.h"
#include "DllTest.h"

#ifdef _MANAGED
#pragma managed(push, off)
#endif

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
           )
{
    return TRUE;
}

#ifdef _MANAGED
#pragma managed(pop)
#endif

//加函数
int APIENTRY Add(int a,int b)   // APIENTRY  此关键字不可少
{
  return (a+b);
}
//减函数
int APIENTRY Subtraction(int a,int b,int i)
{
  if(0==i)
    return (a-b);
  else
    return (b-a);
}
6、这样编译生成就可以得到对应的DllTest.dll的文件了
二、 C#调用 dll文件
1、创建一个c#的控制台程序(当然其他也没有问题),自动生成以下代码
using System;
using System.Collections.Generic;
using System.Text;
//using System.Runtime.InteropServices;

namespace CSharpIncludeC__Dll
{
    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}
2、添加命名空间using System.Runtime.InteropServices;
3、若要引用dll文件,首先吧dll文件自行拷贝到bin/debug,文件夹下,没有的话,先编译一下。
4、添加属性
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);
5、最终产生代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;

namespace CSharpIncludeC__Dll
{
    class Program
    {
        [DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
        static extern int Add(int iNum1, int iNum2);

[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
        static extern int Subtraction(int iNum1,int iNum2,int iMethod);

static void Main(string[] args)
        {
            int iValue = Add(1, 2);
            Console.WriteLine(iValue);
            iValue = Subtraction(1, 2, 1);
            Console.WriteLine(iValue);
            Console.Read();
        }
    }
}
6、生成项目运行就可以了,结果是3和1

dll文件的c++制作相关推荐

  1. dll文件的c++制作dll文件的c++制作

    dll文件的c++制作 1.首先用vs2005建立一个c++的dll动态链接库文件,这时, // DllTest.cpp : 定义 DLL 应用程序的入口点. // #include "st ...

  2. 如何用VB制作DLL文件

    1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块名字为mytestdll  2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD  Public Functi ...

  3. 使用vs2008制作dll文件,生成动态链接库

    转自:http://blog.csdn.net/howard_liu1314/article/details/7862326 1.制作dll文件     vs2008中,File > New P ...

  4. VS2019制作DLL文件

    用VS2019制作DLL文件的一般步骤很简单: 1创建新项目 2找到动态链接库DLL项目 3创建 4.分别在源文件和头文件添加相关函数f.cpp,f.h 第4步中,f.cpp中是没有主函数的各个函数, ...

  5. vs 2017 制作Dll文件的两种方法,以及调用Dll文件的两种方法。

    近来学习制作Dll文件,看了几个视频教程,看了网上的例子,看了msdn上的例子.现在做个总结,以便来日回顾,同时也希望以大家相互交流学习. 注意1:用 method 1 named "Usi ...

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

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

  7. 用Visual C#做DLL文件

    作为软件设计和开发人员大都有过使用DLL(动态连接库)的经历,DLL的产生使得我们的应用程序在可维护性.代码的重复使用等方面都有了很大的提高.以前用的DLL一般都是用Visual C++.Delphi ...

  8. 计算机中丢失vcomp140.dll,Vcomp140.dll文件

    Vcomp140.dll文件官方版是电脑系统中十分重要的一款系统文件.如果你的电脑中出现了"找不到vcomp140.dll 14.16.27012.6"或"vcomp14 ...

  9. cab文件介绍及制作方法

    转自:http://bbs.pcpop.com/091030/5945399.html 1. 什么是cab文件 CAB在电脑上是一种压缩文件,微软出品的东西,用WinRAR可以解压缩,在DOS启动盘里 ...

最新文章

  1. Python数据分析学习文章归纳
  2. matlab yalmip 例程,YALMIP工具箱使用范例.pdf
  3. wpf里的menu怎么用_股市里的两市成交量是什么,它反映了什么,我是怎么用它来定投的...
  4. Linux - 搭建FastDFS分布式文件系统
  5. 【vlfeat】O(n)排序算法——计数排序
  6. VHDL六层电梯控制器及仿真
  7. MediatR 知多少
  8. anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found Import No module named googl
  9. 18张图,详解SpringBoot解析yml全流程
  10. Win7 XAMPP apache无法启动的问题
  11. 系统学习NLP(十五)--seq2seq
  12. ectouch2.0 php5.5_ectouch: ECTouch是一款开源的电商系统,为中小企业提供最佳的新零售解决方案。...
  13. TV端影视APP开发搭建需要注意哪些问题?
  14. 什么是 Google Play服务
  15. html超链接自动下划线,html超链接下划线应该加入吗?
  16. 怎样快速查询单号物流信息,筛选出未签收的单号
  17. 九月腾讯,创新工场,淘宝等公司最新面试三十题
  18. 仰望星星的孩子-2014年终总结
  19. Laravel 第十章 API测试和文档
  20. 单摆测重力加速度的算法(Python)

热门文章

  1. c语言errorinfo结构体,c结构体与文件
  2. bootstrap tab 模拟点击_【第七课】Bootstrap的魅力
  3. 蜗牛星际网卡驱动_矿渣“蜗牛星际“折腾NAS黑群晖全过程
  4. 为什么MCU也要支持AI功能?
  5. 摆摊吗?我卖锅,你修手机。
  6. oracle audit文件,[20191128]oracle Audit文件管理2.txt
  7. android复位机器人图片,安卓(Android)新图标!小绿机器人换脸啦
  8. linux怎么取消挂在u盘,linux下如何挂载U盘
  9. debug idea js_IntelliJ IDEA 配置chrome插件调试js代码 - 狂奔的熊二 - 博客园
  10. python的super方法_Python中“super”是做什么的?