为了学习,我试图从 C# 调用一个汇编函数。我在一个非常枯燥的项目中工作,尽我所能简单地做每一件事。这是我的程序集(主要是从codeproject剪切和粘贴):
.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
行被汇编器忽略,这个警告很好。我已经使用这些说明设置了我的环境。
对于我更熟悉的一种语言 C#,我尝试了两种主要方法:反射和添加 DLL 作为参考。两者都给我一个错误,说需要一个程序集清单。在这里我输了。
我的 C# 很简单:
Assembly mylib = Assembly.LoadFile(@"C:\mypath\MyLib.dll");
我The module was expected to contain an assembly manifest. (Exception from HRESULT: 0x80131018)
在那条线上得到了一个错误。我对装配清单一无所知。任何有关如何创建和嵌入的方向都将不胜感激。