爲了學習,我試圖從C#調用匯編函數。我正在做一個儘可能簡單的非常無菌項目。這是我的組件(主要是剪切和粘貼codeproject):C#調用MASM程序集DLL
.386
.model flat, stdcall
option casemap :none
include \masm32\include\masm32rt.inc
.code
LibMain proc instance:dword,reason:dword,unused:dword
mov eax,1
ret
LibMain endp
PrintMess proc
print "Test"
exit
PrintMess endp
End LibMain
注:該組件構建就好了。沒有錯誤,唯一的警告是,masm32rt.inc有另一個.model
行,彙編忽略,這個警告是好的。我使用these instructions設置了我的環境。
對於C#,我更熟悉的語言,我已經嘗試了2種主要方法:反射和添加DLL作爲參考。兩者都給我一個錯誤,說預計會有一個程序集清單。我在這裏輸了。
我的C#很簡單:
Assembly mylib = Assembly.LoadFile(@"C:\mypath\MyLib.dll");
我也得到The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
作爲該線路上的錯誤。我對裝配清單一無所知。對於如何創建和嵌入一個方向的任何方向將不勝感激。
使用'MASM'您可以創建不能直接從.Net應用程序引用的'native'代碼。你應該「拼命」。也許你以後是'ilasm' – 2012-08-13 19:24:32
我不知道爲什麼我沒有嘗試拼貼。有效。如果您將此作爲答案提交,您將獲得信用。 – 2012-08-13 19:28:22