我传一个字符串到DLL中
例如:
     DLL函数: Sub(char *szBuf);
     传入的字符串: char str[MAX_PATH] = "C:\Documents and Settings\...\...";
     调用函数:Sub(str);     当字符串传入DLL中后,字符串就被截断了,szBuf中的内容为:"C:\Documents".请问:
     这是为什么?就问怎么解决.

解决方案 »

  1.   

    应该是DLL中做了处理,检查DLL中的Sub函数
      

  2.   

    是不是你str是个局部变量,传入的时候已经释放了?
      

  3.   

    不会有这种问题的,你可以用MessageBox把字符串显示出来看看。
      

  4.   

    难道是char str[MAX_PATH] = "C:\Documents and Settings\...\...";的问题?
    改成
    char str[MAX_PATH] = "C:\\Documents and Settings\\...\\...";试试看呢,
      

  5.   

    这个得调试才能知道原因,把SUB的代码发出来看看
      

  6.   

    看样子是碰到空格被截断了
    别告诉我是sscanf
      

  7.   

    我也不知道怎么回事,后来解决了!虽然传入的字符串被截断了,但是,源字符串还是在内存里的,我用memcpy把字符串从内存中拷出来
    把原来截断地方的字符改为空格就行了,字符串就完整了当字符串传入进程的时候,系统可能把第一个空格当做了'\0'吧。谢谢大家支持,人人都有分