C Sharp呼叫標準動態庫

2021-09-05 14:31:39 字數 1337 閱讀 1359

這裡講述的是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

mylib.c

microsoft (r) incremental linker version 6.00.8447

/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呼叫標準動態庫的全過程, 本來覺得很簡單的東西, 一直都沒有想寫, 碰巧今日遇一朋友問及此事, 就順便寫了下來. 有什麼問題可以聯絡[email protected]

標準動態dll編寫和呼叫

dll的編寫 include stdio.h include stdafx.h bool apientry dllmain handle hmodule,dword ul reason for call,lpvoid lpreserved case dll process detach 程序關閉時,...

在C 中呼叫C語言標準動態庫方法

cisco packet tracer 5.0軟體深入詳解使用教程 3 詳解網路嗅探工具的原理 sniffer wireshark 2010 年 07 月 19 日 seth c net程式設計 go to comment out mylib.dll dll implib mylib.lib myl...

動態呼叫動態庫的方法

假定動態庫提供乙個引出函式為int func int n extern c typedef int stdcall pfunc int n 引進函式,並定義為函式指標 hmodule hmodule getmodulehandle dll 檢查動態庫是否已經載入 if hmodule null hm...