日期:2018年11月26日

环境:window 10,VS2015 community

一、利用C++创建DLL

  1.新建项目;

  

  

  2.打开CreateDLL.cpp文件,并输入测试代码

  

 #include "stdafx.h"

 int __stdcall Add(int a, int b)
{
return a + b;
} int __stdcall Sub(int a, int b)
{
return a - b;
}

DLL Test Code

  3.给工程添加一个.def文件,并在该文件中插入以下代码;

 LIBRARY CreateDLL
EXPORTS
Add @,
Sub @,

def Code

  注意:这里的CreateDLL是工程名如果不同则应用程序连接库时会发生连接错误!

  其中LIBRARY语句说明该def文件是属于相应DLL的,EXPORTS语句下列出要导出的函数名称。我们可以在.def文件中的导出函数后加 @n,如Add@1,Sub@2,表示要导出的函数顺序号,在进行显式连时可以用到它。该DLL编译成功后,打开工程中的Debug目录,同样也会看到 CreateDLL.dll和CreateDLL.lib文件。

二、使用C#调用DLL

  1.在新建的C#工程中插入以下代码;

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices; namespace AcmeCollections
{
class Program
{
[DllImport(@"C:\Users\xxxxx\Desktop\study\CreateDLL\Debug\CreateDLL.dll")]//DLL的位置
public static extern int Add(int a, int b); [DllImport(@"C:\Users\xxxxx\Desktop\study\CreateDLL\Debug\CreateDLL.dll")]
public static extern int Sub(int a, int b);
static void Main(string[] args)
{
long ans;
string str; ans = Add(, );
str = Convert.ToString(ans);
Console.WriteLine(str);
ans = Sub(, );
str = Convert.ToString(ans);
Console.WriteLine(str);
Console.ReadLine();
}
}

C# Main Code

  2.运行结果;

  

参考链接:http://www.cnblogs.com/daocaoren/archive/2012/05/30/2526495.html

利用C++创建DLL并C#调用的更多相关文章

  1. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  2. 在VS2015中用C++创建DLL并用C++调用且同一时候实现对DLL的调试

    一:用C++创建DLL            依照[在VS2015中用C++编写可被其他语言调用的动态库DLL]提示创建C++编写的DLL.或參考[在VS2015中用C++创建DLL并用C#调用且同一 ...

  3. delphi 创建DLL文件 及其调用和注意事项

    首先创建一个DLL文件,项目自带的代码为: library ProjectPnr; { Important note about DLL memory management: ShareMem mus ...

  4. C# 创建Dll文件供程序调用方法

    C# 创建Dll文件供程序调用方法 使用C#创建动态Dll文件方法: 1.  在VS2017环境下,新建-项目-选择类库类型: 2. 新创建一个.cs文件(如test.cs),编写代码如下: usin ...

  5. 利用WPF创建含多种交互特性的无边框窗体

    咳咳,标题一口气读下来确实有点累,让我先解释一下.另外文章底部有演示程序的下载. 本文介绍利用WPF创建一个含有以下特性的窗口: 有窗口阴影,比如QQ窗口外围只有几像素的阴影: 支持透明且无边框,为了 ...

  6. windows编程:创建DLL

    创建DLL Dll是动态链接库的缩写,可以作为附加代码动态映射到进程的地址空间中. 动态库的一般创建方法如下 方法1.使用 __declspec(dllexport)  方式导出 一般的框架如下 // ...

  7. c++ 生成dll文件并调用-转

    .h(头文件) .lib(库文件) .dll(动态链接库文件) 之间的关系和作用的区分   .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll, ...

  8. asp.net源程序编译为dll文件并调用的实现过程

    很多时候,我们需要将.cs文件单独编译成.dll文件,这就需要使用csc命令将.cs文件编译成.dll动态链接库文件.具体的操作步骤如下: 打开命令窗口->输入cmd到控制台->cd C: ...

  9. C#创建dll类库

    类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它.这样一来,就节省了我们的内存空间.而想要在类库添加什么类,还需取决于类库要实现哪 ...

随机推荐

  1. Vector 源码阅读

    Vector在功能上与ArrayList是类似的,实现的数据结构也是一样的.但Vector是线程安全的,ArrayList是线程不安全的.

  2. centos设置固定IP方法

    首先网络模式设为桥接 [root@centos64 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0HWADDR=00:0C:2 ...

  3. RANDOM 的用法

    random 用法 1.利用RANDOM取随机数 shell有一个环境变量RANDOM,范围是0--32767 如果我们想要产生0-25范围内的数:$(($RANDOM%26),在$(()) 是可以省 ...

  4. Ruby JSON操作

      解析来我们就可以使用以下命令来安装Ruby JSON 模块: ? 1 $gem install json 使用 Ruby 解析 JSON 以下为JSON数据,将该数据存储在 input.json ...

  5. cetons 怎么强制卸载 PHP

    查看php版本命令: #php -v 这个命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 #php -v 还是会看到有版本信息的..... 必须强制删除 #rpm -qa ...

  6. HDU - 1260 Tickets 【DP】

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1260 题意 有N个人来买电影票 因为售票机的限制 可以同时 卖一张票 也可以同时卖两张 卖两张的话 两 ...

  7. Contiki 2.7 Makefile 文件(三)

    2.第二部分 这里的usage,targets,savetarget,savedefines都是伪目标. 和all不同,这些伪目标不会被执行,除非显式指定这些目标. 这里有两个目标savetarget ...

  8. jumpserver v3.0

    文档地址 www.php230.com/weixin1451347094.html

  9. Linux学习之路(二)文件处理命令之上

    文件处理命令 1.目录处理命令 2.文件处理命令 3.链接命令 1.目录处理命令 建立目录:mkdirmkdir -p [目录名]-p 递归创建命令英文原意 : make directories 切换 ...

  10. ps炫光素材

    炫光闪电笔刷,炫光闪电笔刷,雷电笔刷,自然闪电Photoshop笔刷下载ps炫光素材 素材下载:http://www.huiyi8.com/sc/8695.html