none
数据托管问题 RRS feed

  • 问题

  • 大家好

                 最近遇到这么个问题,在vc6.0中打包了一个DLL,输出函数的参数均为cstring 类型,在c#中对该dll中的导出函数进行调用,程序运行正常,扑捉不出任何错误,但是,c#代码调用非托管的dll(vc6.0所写结束后,无法查看型参的值,提示:  fname Cannot obtain value of local or argument 'fname' as it is not available at this instruction pointer, possibly because it has been optimized away. string(fname未dll非托管代码传入的型参),其他几个形参和这个参数情况相同。这个dll调用频繁后系统会出现bug,提示The runtime has encountered a fatal error. The address of the error was at 0x79eed633, on thread 0x146c. The error code is 0xc0000005. This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code. Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack.(这个错误也有可能是调用第三方的ocx出现的问题),我怀疑是否因为我的dll出现了问题,因为dll中对形参的进行过转换,但是我在dll中对形参运行完成后进行内存释放(CString.FreeExtra())出现错误,从c++的内存管理原则上讲这个错误是正确的。所以目前很茫然。请各位施于援手。


    Mstguan
    2009年4月1日 7:55

答案

全部回复