一、用VS2005写一个 C 的类库的步骤:

(1)、建立一个空的Visual C++项目

(2)、这时候在项目中可以看见 三个空目录

选中 "源文件" 目录,然后点鼠标右键,在弹出菜单中选择“添加”--->"新建项" ,建立 main.c 项

(3)、在main.c 文件中输入如下代码(字符串)

#include <stdio.h>

int MyCDll(int a, int b)
{
return a+b;
}

(4)、建立 def文件

选中 "源文件" 目录,然后点鼠标右键,在弹出菜单中选择“添加”--->"新建项" ,建立 MyDll.def 项

(5)、在MyDll.def 文件中输入如下代码(字符串)

; MyDll.def : 声明 DLL 的模块参数。

LIBRARY       "MyCDll"

EXPORTS
     MyCDll @1
     ; 此处可以是显式导出

(6)、到这一步项目和代码都写好了,但是目前编译只是 exe可执行文件,我们要的是 Dll类库,所以不要着急:),选中 "MyDll" 目录,然后点鼠标右键,在弹出菜单中选择“属性”还需要做一下项目的属性设置,在“配置属性”的“常规”中,将“配置类型”改为“动态库(.dll)”即可。

好了,现在你可以去编译了。这时候会生成 MyDll.dll

二、用 C#来调用的示例

(1)、建立一个空的Visual C# 项目

(2)、这时候在项目中可以看见 一个窗体,在窗体上点鼠标右键,在弹出菜单中选择“查看代码”

在打开的代码文件中输入如下代码(字符串):

[DllImport(@"E:\C++\timetest\debug\MyDll.dll", CharSet = CharSet.Ansi, EntryPoint = "MyCDll", CallingConvention = CallingConvention.Cdecl)]
         public static extern int MyCDll(int a, int b);

(3)、现在对类库中函数的引用已经申明好了,然后在窗体上放一个按钮控件和一个文本框,我们来调用一下啊。

在按钮的OnClick事件中写如下字符串

int i = 0;
             i = MyCDll(1 , 2);

this.textBox1.Text = i.ToString();

注意:在使用dll的时候头文件中必须加上 using System.Runtime.InteropServices;

好了,现在按一下 ctrl + f5   来运行一下看看效果如何。

用VS2005写一个 C 的类库和用 C#来调用的示例的更多相关文章

  1. 写一个dup2功能相同的函数,不能调用 fcntl 函数,并且要有出错处理

    实现的时候用到系统原来的dup函数 // mydup2.c // 2015/08/17 Lucifer Zhang version1.0 // write my own dup2 function / ...

  2. 写一个dup2功能同样的函数,不能调用 fcntl 函数,而且要有出错处理

    实现的时候用到系统原来的dup函数 // mydup2.c // 2015/08/17 Lucifer Zhang version1.0 // write my own dup2 function / ...

  3. 一起写一个JSON解析器

    [本篇博文会介绍JSON解析的原理与实现,并一步一步写出来一个简单但实用的JSON解析器,项目地址:SimpleJSON.希望通过这篇博文,能让我们以后与JSON打交道时更加得心应手.由于个人水平有限 ...

  4. 写一个ajax程序就是如此简单

    写一个ajax程序就是如此简单 ajax介绍: 1:AJAX全称为Asynchronous JavaScript and XML(异步JavaScript和XML),指一种创建交互式网页应用的网页开发 ...

  5. 比最差的API(ETW)更差的API(LTTng)是如何炼成的, 谈如何写一个好的接口

    最近这几天在帮柠檬看她的APM系统要如何收集.Net运行时的各种事件, 这些事件包括线程开始, JIT执行, GC触发等等. .Net在windows上(NetFramework, CoreCLR)通 ...

  6. [AST实战]从零开始写一个wepy转VUE的工具

    为什么需要 wepy 转 VUE "转转二手"是我司用 wepy 开发的功能与 APP 相似度非常高的小程序,实现了大量的功能性页面,而新业务 H5 项目在开发过程中有时也经常需要 ...

  7. 让我手把手教你写一个强大、方便使用的 IOC 容器

    一.介绍 1.介绍 最近无聊,也没什么事做,没事做总是要给自己找点事情做吧,毕竟人的生活在与折腾.于是,决定自己手动写一个 IOC 的框架.我们知道在 NetCore 的版本里面已经内置了 IOC 容 ...

  8. 怎样写一个webpack loader

    div{display:table-cell;vertical-align:middle}#crayon-theme-info .content *{float:left}#crayon-theme- ...

  9. 请写一个php函数,可以接受任意数量的参数

    请写一个php函数,可以接受任意数量的参数 这是一道面试题.怎么写这个函数呢? function fun(......) { } ----------------------------------- ...

随机推荐

  1. HDOJ/HDU 1297 Children’s Queue(推导~大数)

    Problem Description There are many students in PHT School. One day, the headmaster whose name is Pig ...

  2. Unity-layermask的问题

    using UnityEngine; using System.Collections; public class NewBehaviourScript : MonoBehaviour { priva ...

  3. 折腾iPhone的生活——5s使用的各种小技巧

    电池: iPhone电池正常充电方法:随便充,想怎么充怎么充,想充就充,想停就停. 需要注意: 1.如果要闲置3个月以上,一定要冲到40%电以后再闲置 2.不要在-40~35度使用(应该是废话) 3. ...

  4. About using UTF-8 fields in MySQL

    https://www.adayinthelifeof.nl/2010/12/04/about-using-utf-8-fields-in-mysql/ I sometimes hear: “make ...

  5. linux驱动开发之HelloWorld

    最近实习,公司项目搞的是平板开发,而我分配的任务是将驱动加载到内核中. 准备工作,必要知识了解:加载有两种方式,一种是动态加载和卸载即模块加载,另一种是直接编译进入内核:Linux内核把驱动程序划分为 ...

  6. docker registry 搭建

    registry 搭建 假设在 cd /root 目录下 最新 docker run -d -p 5000:5000 -v pwd/data:/var/lib/registry --restart=a ...

  7. Android 开发中 iBeacon的使用

    iBeacon的工作原理是基于Bluetooth Low Energy(BLE)低功耗蓝牙传输技术,iBeacon基站不断向四周发送蓝牙信号,当智能设备进入设定区域时,就能够收到信号.只要满足iBea ...

  8. java按照集合中元素的属性进行排序示例代码

    public class Student { private String name; private int age; private int id; public Student() {  sup ...

  9. Java基础知识强化之集合框架笔记36:List练习之键盘录入多个数据在控制台输出最大值

    1. 键盘录入多个数据,以0结束,要求在控制台输出这多个数据中的最大值 分析: •  创建键盘录入数据对象 •  键盘录入多个数据,我们不知道多少个,所以用集合存储 •  以0结束,这个简单,只要键盘 ...

  10. Objective-C:swift、objective-c、C++、C混合编程

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css); @import url(/ ...