c#里调用自写的delphi7的一个dll
C#声明如下:
[DllImport("PB2RM.dll", EntryPoint = "NewReportLOCAL")]
public static extern int NewReport(string templatefile, string tablexmlfile, string fieldxmlfile, string valuexmlfile);delphi声明如下:
function NewReportLOCAL(atemplatefile:pchar;tablexml:pchar;fieldxml:pchar;valuexml:pchar):integer;stdcall;export;     为什么在vs2005里运行程序,关闭程序后*.vshost.exe退出后有"读内存错误",而运行debug\*.exe,完全正常.
另外,这个dll在delphi,在pb的程序里调用也完全正常.
请问,这个"读内存错误"问题可能出在vs2005,还是c#,还是dll里?

解决方案 »

  1.   

    这种问题很难确定源头建议通过逐步排除的方法来寻找把宿主进程关闭掉看看项目属性->调试->启动调试器
    取消启用Visual Studio宿主进程如果Release版本不出问题就成
      

  2.   

    *.vshost.exe  是调试的时候支持.net环境的。调试时不能关这个进程
      

  3.   

    按专家门诊的方法,试验结果如下:
    C#调用delphi7的发布简单dll中函数,正常.
    debug或Realease版单独运行正常,在VS2005中运行异常,且该异常无法在C#或delphi中捕获.
    由此断定,这个异常是vs2005的host引发的,可能是delphi中这个dll中调用的某个控件有不良操作.任之.
      

  4.   

    按专家门诊的方法,试验结果如下:  
    C#调用delphi7发布的dll中简单函数,正常.  
    debug和Release版单独运行均工作正常,仅在VS2005中调试时会有此异常,且该异常无法在C#或delphi中捕获.  
    由此断定,这个异常是vs2005的host引发的,可能是这个dll中调用的某个delphi控件有不良操作.  
     
    任之.