我在ASP.NET中调用一个用C ++编写的DLL。 当它运行到IIS 7时,池(w3wp.exe)崩溃并且“及时调试窗口”打开。
我做了很多跟踪,发现在调用任何具有“out string”参数的函数(在非托管DLL中)(或返回字符串值)时会发生崩溃。
我在网上看到的人比他们的DLL(C,Delphi,VB6)有这个问题。但没有答案。所以我打电话给专家!
如何调用这些函数以便IIS 7无错误地处理它?
cas sakal
答案 0 :(得分:1)
您应该使用StringBuilder
作为互操作字符串输出参数:
[MarshalAs(UnmanagedType.LPStr)] StringBuilder myString
答案 1 :(得分:0)
可能无法实现。 COM提供接口规范,但不保证调用者能够正确使用接口。除非COM对象公开COM子系统可自动编组的方法(例如:自动化兼容),否则您可能无法使用它们。编写一个C ++ COM对象很容易,这个对象不能在进程外直接访问,也不能用C ++以外的任何语言编写。
您可以编写一些自定义封送处理代码以使其正常工作,但我不认为它可以直接使用。如果类型足够简单/直接,可能会有一些内置的编组属性使其工作;但是,我在这个领域并不是很了解,所以希望其他人可以提供帮助。