首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 呼叫非託管 DLL 實戰(一):VC++ 建立匯出函數、cl /LD 編譯 DLL、C# DllImport 引入與靜態外部方法宣告

     編輯:關於C語言

1. 建立非託管 DLL (VC++)


// MyLib.cpp
extern "C" __declspec(dllexport) int add(int a, int b) { return a + b; }

必須 加上 extern "C",否則導出名稱會被修飾(如 ?add@@YAHHH@Z),C# 無法以 "add" 找到入口點。

2. 編譯 DLL


C:\> cl /LD MyLib.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804
... 生成 MyLib.dll, MyLib.lib, MyLib.obj, MyLib.exp

/LD 參數指示產生 DLL。

3. C# 呼叫


using System;
using System.Runtime.InteropServices;

public class InvokeDll
{
    [DllImport("MyLib.dll", CharSet = CharSet.Auto)]
    static extern int add(int a, int b);

    public static void Main()
    {
        Console.WriteLine(add(10, 30)); // 輸出 40
    }
}

DllImport 屬性指定 DLL 名稱與字元集,static extern 宣告外部方法簽章,呼叫方式如同一般靜態方法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved