【发布时间】:2012-10-31 14:53:48
【问题描述】:
我正在尝试从 ASP.net 网络调用 dll 方法。它在 W2003 服务器上运行,但相同的 dll 和相同的 web 在带有 IIS 7.5 的 w2008 服务器 R2 上崩溃。我这样做是为了导入 dll:
<DllImport("Cripto.dll")> _
Public Shared Function DesCipher(ByVal uiMode As Integer, ByVal uiLength As Integer, ByVal szSourceData As String) As String
End Function
我尝试了 64 位 dll 编译,但问题仍然存在。
我要疯了……
请帮忙!
【问题讨论】:
-
你看到什么样的崩溃?
-
这是一个线程中止崩溃。现在我创建了一个新的空方法 dll,但它仍然无法正常工作。当我调用公共方法时,网络会引发受控异常,因为它丢失了所有会话变量¿?¿?¿
-
新方法的签名(参数计数、参数类型、返回类型)是否与此方法相同?
-
这是 dll 方法:
extern "C" { __declspec(dllexport) char* DesCifrar() { return ("Hello from DLL !\n");这是网络调用:_ Public Shared Function DesCifrar() As String End Function 。我认为一切都很好,不是吗? -
由于 VB 认为是 Unicode,并且 C/C++
char值不是 Unicode,因此您应该使用<DllImport("DLL_SGRI.dll", CharSet:=CharSet.Ansi, ExactSpelling:=True)>。否则,运行时会认为返回的指针是指向宽字符的指针。
标签: vb.net dll iis-7.5 windows-server-2008 windows-server-2003