程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 在.net程序中嵌入asm匯編代碼

在.net程序中嵌入asm匯編代碼

編輯:關於.NET

本文主要是想介紹一下如何使用vs.net 2008生成,可供.net程序及c/c++程序同時使用的dll (暫時就叫它perfect dll好了), 說白了,就是把managed code和unmanaged code通過程序集鏈接器 (Al.exe)創建在一個程序集中。

最佳實踐:

1. 創建一個C++ Win32 dll project, 比如就叫asmproject。

2. 在asmproject.cpp中,添加一個add方法,這個方法簡單的以至於我都能用asm來寫,好吧,那就的叟一下好了。

extern "C" __declspec(dllexport) int add(int a, int b)
{
   int c;
   __asm
   {
     mov eax, a;
     add eax, b;
     mov c, eax;
   }
   return c;
}

3. 再創建一個C# Class Library的項目,叫asmlibrary吧,添加一個靜態類

public static class asmlibrary
{
   [DllImport("asmlibrary.dll")]
   public static extern int add(int a, int b);
}

注意那個DllImport,是引用的自已哦。

4. 下邊,關鍵的步驟來了。用記事本打開asmlibrary.csproj文件,找到<OutputType>項,將它改為Module, 保存。回到vs.net中,生成asmlibrary,這時,去生成目錄下看,你會看到生成一個asmlibrary.netmodule文件。

5. 打開那個c++項目asmproject的Property Pages, 找到Configuration Properties -> Linker -> Input -> Addtional Dependencies, 添加上邊生成的那個asmlibrary.netmodule文件, 再找到

Configuration Properties -> Linker -> General -> Output File,改成asmlibrary.dll。這是,再編譯這個c++項目,就可以得到這個名字叫asmlibrary.dll的"perfect dll"了。

好了,來調用一下試試吧,再建一個C# windows appliction,添加引用asmlibrary.dll,看看是不是可以引用?!

讓我們使用兩個工具,來查看一下這個“神奇的”dll吧:

本文配套源碼

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