为了学习,我试图从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