C-Sharp调用标准动态库

原创 2003年01月15日 09:22:00

 这里讲述的是C#调用标准动态库的问题, 在我以前的文件中讲到过, C#调用Win32API, 原理是一样的. 这里我详细讲解用C写一个标准的动态库, 然后让C#调用. (本篇适合初学者, 中间没有任何冗余代码, 简洁明了)
 软件环境: VC6.0(当然其他版本的VC5也可以)
 1.制作标准动态库
__declspec(dllexport) int __cdecl add(int, int);//这一句是声明动态库输出一个可供外不调用的函数原型.
int add(int a,int b) {//实现这个函数
 return a+b;
}
以上简单3行代码,声明一个add的方法, 输入参数是两个int参数,返回这两个数之和. 保存为MyLib.c
然后执行编译命令.
H:/XSchool/C#-School/HowTo>cl /LD MyLib.c
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8168 for 80x86
Copyright (C) Microsoft Corp 1984-1998. All rights reserved.

MyLib.c
Microsoft (R) Incremental Linker Version 6.00.8447
Copyright (C) Microsoft Corp 1992-1998. All rights reserved.

/out:MyLib.dll
/dll
/implib:MyLib.lib
MyLib.obj
   Creating library MyLib.lib and object MyLib.exp

确信有以上输出, 说明编译成功生成了动态库.

 2.编写C-Sharp程序调用该动态库
using System;
using System.Runtime.InteropServices;//这是用到DllImport时候要引入的包

public class InvokeDll {
 [DllImport("MyLib.dll", CharSet=CharSet.Auto)]
 static extern int add(int a,int b);//声明外部的标准动态库, 跟Win32API是一样的.
 
 public static void Main() {
  Console.WriteLine(add(10,30));
 }
}
保存为InvokeDll.cs文件, 与MyLib.dll置于同一目录, 编译该文件.
H:/XSchool/C#-School/HowTo>csc invokedll.cs
将生成Invokedll.exe, 可以执行该文件.
以上是C-Sharp调用标准动态库的全过程, 本来觉得很简单的东西, 一直都没有想写, 碰巧今日遇一朋友问及此事, 就顺便写了下来. 有什么问题可以联系zlyperson@163.net

c.sharp自定义事件

using System;namespace testEventApp{ public delegate void Class2_Event_Handler(object sender, string...
  • zhuanglonghai
  • zhuanglonghai
  • 2006年09月22日 22:34
  • 1312

利用函数指针实现动态库的动态调用——函数指针正向调用法

动态库的lib文件里面保存了动态库dll中函数的起始地址,如果不用lib文件,而是我们自己手动通过函数指针来调用可以这样 //客户端初始化 获取handle上下 typedef int (*...
  • HelloNiGeSB
  • HelloNiGeSB
  • 2016年06月28日 10:37
  • 879

Sharp调用标准动态库

这里讲述的是C#调用标准动态库的问题, 在我以前的文件中讲到过, C#调用Win32API, 原理是一样的. 这里我详细讲解用C写一个标准的动态库, 然后让C#调用. (本篇适合初学者, 中间没有任何...
  • wangqi0079
  • wangqi0079
  • 2013年03月13日 10:30
  • 350

vs2008 C++创建和调用标准DLL

为了共享代码,需要生成标准的dll,本文将介绍在vs2008 C++生成及调用dll。 一、生成DLL     生成一个名为FunDll的dll文件,对外函数为addl。    step1:vs...
  • xsjm206
  • xsjm206
  • 2012年02月26日 21:18
  • 6942

动态调用动态库方法 .so

关于动态调用动态库方法说明 一、       动态库概述 1、  动态库的概念 日常编程中,常有一些函数不需要进行编译或者可以在多个文件中使用(如数据库输入/输出操作或屏幕控制等标准任务函数)。...
  • lbmygf
  • lbmygf
  • 2012年03月28日 10:38
  • 5959

VS之动态库实现和调用

程序开发中,经常会使用到动态库,那么动态库该如何实现和调用呢?本文通过一个简单的例子实现。...
  • bingdianlanxin
  • bingdianlanxin
  • 2015年01月02日 15:03
  • 1776

linux动态库类的调用

关于动态调用动态库方法说明  一、  动态库概述  1、  动态库的概念  日常编程中,常有一些函数不需要进行编译或者可以在多个文件中使用(如数据库输入/输出操作或屏幕控制等标准任务函数)。可以事先对...
  • zzd121333
  • zzd121333
  • 2016年06月15日 18:18
  • 414

node.js调用动态库

网上找了一大堆,看起来都是可行的,实践时有很多问题,后边在列出部分问题,这里只说一下解决,那就是这些都写的是node.js V0.10.*之前的,现在我装的是v6.11.0 所以说文章还是要写清楚。 ...
  • yxmlhc
  • yxmlhc
  • 2017年07月05日 17:58
  • 425

VS2013动态库dll的创建和生成,以及调用

VS2013动态库dll的创建和生成,以及调用
  • wfei101
  • wfei101
  • 2017年06月18日 19:53
  • 594

关于动态调用动态库方法说明

关于动态调用动态库方法说明 一、    动态库概述 1、  动态库的概念 日常编程中,常有一些函数不需要进行编译或者可以在多个文件中使用(如数据库输入/输出操作或屏幕控制等标准任务函数)。可以事...
  • sxwenpan
  • sxwenpan
  • 2014年07月25日 00:36
  • 2579
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C-Sharp调用标准动态库
举报原因:
原因补充:

(最多只允许输入30个字)