本帖最后由 jkylin 于 2011-05-20 08:28:59 编辑

解决方案 »

  1.   


    outputData参数你分配了吗?还是直接定义就传递了?另外:
    调用方式你确定一下:是CallingConvention = CallingConvention.StdCall
    还是CallingConvention = CallingConvention.Cdecl
      

  2.   


    是标准调用。。
    另外改一下CharSet = CharSet.Auto,试试。CharSet = CharSet.Ansi
      

  3.   

    CallingConvention.StdCall、CallingConvention.Cdecl、CharSet.Ansi都存在这样的问题,
    再简单的测试中没有问题,只要启动整个程序就出现
      

  4.   

    这个错误是因为outputData参数导致的。
    你把代码贴出来来吧。你能确定outputData参数的长度吗?你传递了多大的空间呢?
      

  5.   

    我不知道outputdata的长度,因为output的长度,是基于我的inputdata,然后再由我调用的dll根据一定的业务逻辑,计算得到的,长度是不固定的,我调用出错的代码是
    StringBuilder input = new StringBuilder("");
    //根据我的逻辑处理input
    StringBuilder output = new StringBuilder("");
    int result = CBUSINESS_HANDLE(input.toString(), output);
    你的意思是 output 长度不够造成?