程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C-Sharp調用標准動態庫

C-Sharp調用標准動態庫

編輯:關於C語言

這裡講述的是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:XSchoolC#-SchoolHowTo>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:XSchoolC#-SchoolHowTo>csc invokedll.cs
將生成Invokedll.exe, 可以執行該文件.
以上是C-Sharp調用標准動態庫的全過程.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved