2012-06-25 86 views
1

我想在VB.NET中調用一些ASM函數。我該怎麼做? 這是爲了性能目的。在VB.NET中使用asm

我沒有在網上找到任何東西。

THX

回答

5

VB.NET和一般的CLR不支持混合彙編代碼CIL(這是可能的,但我們只是認爲它沒有),在相同的組件(請注意,「程序集「是賦予.NET可執行文件的名稱,並不涉及」彙編代碼「,這是令人困惑的,我知道)。

你會想通過互操作做到這一點。你需要將你的彙編指令編譯到它們自己的本地Windows DLL文件中,然後導出這些函數(彙編器/鏈接器將附帶說明如何執行此操作),然後從VB.NET中定義一個靜態類(「Module 「),它具有DLL的每個導出函數的DllImport語句。那麼這只是調用這些函數的問題。

通過CLR爲您處理類型轉換(「編組」)到本機。

+0

Thx,你認爲我可以做任何性能改進嗎? – Naster

+0

這取決於你想要完成什麼。 .NET框架已經具有許多字符串操作和其他.NET內部函數的「本地」(非CIL)實現。我想在圖像/視頻處理和壓縮/編碼方面的東西可以在本機(C/C++或彙編)中加速,但如果你這樣做,那麼你不妨用C++編寫整個程序。 – Dai

1

這可以用C#輕鬆安全地完成,不明白爲什麼它不能與VB一起工作。