一、用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. 怎样写一个webpack loader

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

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

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

  9. 学记:为spring boot写一个自动配置

    spring boot遵循"约定优于配置"的原则,使用annotation对一些常规的配置项做默认配置,减少或不使用xml配置,让你的项目快速运行起来.spring boot的神奇 ...

随机推荐

  1. Android M新特性之Behavior Changes

    1.Runtime Permissions On your apps that target the M Preview release or higher, make sure to check f ...

  2. ✡ leetcode 168. Excel Sheet Column Title 26进制数字 --------- java

    Given a positive integer, return its corresponding column title as appear in an Excel sheet. For exa ...

  3. android menu showAsAction属性

    app中有一个菜单(menu),showAsAction主要是针对这个菜单的显示起作用的,它有三个可选项:always:总是显示在界面上 never:不显示在界面上,只让出现在右边的三个点中 ifRo ...

  4. POI实现word文档转html文件

    POI word文件转html package com.feiruo.officeConvert; import java.io.BufferedWriter; import java.io.File ...

  5. EventDemoandStyleDemoandThemeDemo

    Event Handling 示例: 分为EventListener. EventListenerRegistration和EventHandler. 注册Event的三种方法: 1)  在Activ ...

  6. 基于SSM框架的简易的分页功能——包含maven项目的搭建

    新人第一次发帖,有什么不对的地方请多多指教~~ 分页这个功能经常会被使用到,我之前学习的时候找了很多资源,可都看不懂(笨死算了),最后还是在朋友帮助下做出了这个分页.我现在把我所能想到的知识 做了一个 ...

  7. Scala 编程(三)基本类型和操作

    一些基本类型 值类型 范围 Byte 8位有符号补码整数(-27-27-1) Short 16位有符号补码整数(-215-215-1) Int 32位有符号补码整数(-231-231-1) Long ...

  8. 告别IE给我们的web开发带来的困扰(使用chrome frame v8引擎)

    茶爸爸个人微信:benyzhous,公众号:cha-baba欢迎骚扰 由于客户所有机器必须使用IE6浏览器,导致我们在开发项目过程中遇到非常多的样式与性能问题,在偶然的一次使用360软件管家搜索chr ...

  9. 【Spring 核心】AOP 面向切面编程

    一.什么是面向切面编程? 二.通过切点来选择连接点 三.使用注解创建切面 四.在XML中声明切面 五.注入AspectJ切面

  10. 浅谈React

    浅谈react react是什么?其官网给出了明确定义:A JavaScript library for building user interfaces,一个用于构建用户界面的JavaScript库 ...