VB中写的DLL在ASP.NET中调用总是错误
在VB中写了个DLL ,放在VB中运行正常,但在C#中却总是显示“尝试读取或写入受保护的内存。这通常指示其他内存已损坏。”不知是什么原因,请大侠们请点。
调用的代码如下:
public class Utility
{
[DllImport("AES.dll", EntryPoint = "AesLock", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern string AesLock(string s, string p);
[DllImport("AES.dll", EntryPoint = "AesUnLock", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern string AesUnLock(string s, string p);
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string PS = "";
PS = Utility.AesLock("test", "123456");
}
[最优解释]
VB不支持产生标准的具有导出函数的dll,你应该使用ActiveX DLL,然后再在.NET程序中引用。
也许你可能用一些Hack方法制作带有导出函数的dll。并且在VB中可以正确调用,它的原理是通过额外的操作让链接器(Linker)产生导出函数表,但是这并不足以让VB产生的dll正常工作,因为VB的dll需要额外的代码初始化VB的虚拟机(msvbvm*0.dll),而除了VB程序为宿主进程,其它程序都不能正确处理,所以导致运行异常。
[其他解释]
以上生成的DLL已经使用了AmicForVB做成了标准和DLL。我在想是不是我的调用方法有问题?还是什么问题。
[其他解释]
我已经说了,不是你的问题。
[其他解释]