在我的ID卡读取应用程序中,我正在导入一些非托管代码(dll)进行身份验证。我无法导入此DLL。我没有得到任何错误,但DLL没有导入,无法访问。当它在Web应用程序中完成时,它在Windows窗体中工作。我没有得到输出。我可以提供一些关于如何使用它的想法或一些例子吗? 这是我的代码:
/// <param name="readerNumber">The reader number.</param>
[DllImport("EIDReader.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
internal static extern void InitSelectedReaderEx(ManagerData data, int readerNumber);
[DllImport("EIDReader.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
[return: MarshalAs(UnmanagedType.Bool)]
internal static extern bool ReadSISCard([In, Out] SISRecord identity);
答案 0 :(得分:3)
C#/ Winforms加载DLL的方式与ASP.NET的工作方式有所不同。
C#winforms在.NET VM中执行,ASP.NET(也在.NET VM上运行)在IIS中进行沙箱化。
您必须首先将 dll加载到内存中,然后调用您想要的方法。
在此处查看教程How to Interop ASP.NET
答案 1 :(得分:0)
您想要引用COM库吗?如果是这样,那么您需要为它创建一个COM包装器DLL。查看工具 tlbimp ,它将创建一个可以在ASP.NET应用程序中引用的包装DLL。