zoukankan      html  css  js  c++  java
  • CSharp调用标准动态库

    http://www.28600.com/article2/12-47434.htm
    这里讲述的是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

  • 相关阅读:
    X oracle 12c new feature: Automatic Report Capturing Feature
    X 搭建Postgresql configure: error: readline library not found
    X windows上利用vmvare搭建共享存储搭建rac
    洛谷P1397 [NOI2013]矩阵游戏
    BSOJ 6289【NOIP2018模拟赛】黄昏
    BSOJ 4282 秀秀的照片
    BSOJ 5185【11.08题目】暴力破解
    BSOJ 5100 简单的区间
    VUE 项目自适应屏幕和浏览器
    yarn npm区别
  • 原文地址:https://www.cnblogs.com/cy163/p/302139.html
Copyright © 2011-2022 走看看