我创建了一个win32 Dynamic Link Library 工程,用c语言的方式export接口函数
extern "C" __declspec(dllexport) 函数类型 __cdecl 函数名(参数);问题:
我现在想把一个文本文件的全部内容传入到函数里面去,想用char *类型,但是如果文件有很多行的话,是不是传递的大小有限制啊,或者还有没有其它方法,一次性的把文件内容传入到dll中?

解决方案 »

  1.   

    跟内存有关。
    因为dll是一个单独的进程,如果把数据指针给它,系统会把指针指向的内存连通指针一起拷贝到dll的进程空间中。
      

  2.   

    HANDLE hFile = CreateFileMapping(...) ;//把文件作映像用。
    LPVOID pBuffer = ::MapViewOfFile(hFile,...) ;//得到文件开始地址。
    把上面的pBuffer传递到DLL接口中就可以了
      

  3.   

    我现在想把一个文本文件的全部内容传入到函数里面去,想用char *类型,但是如果文件有很多行的话,是不是传递的大小有限制啊,或者还有没有其它方法,一次性的把文件内容传入到dll中?用char *类型没有限制。char *仅4个字节而已。
      

  4.   

    赞同 lianglp() 的意见,最好是传句柄。
    其实最好是把文件操作放到dll中操作,不要传来传去的。
      

  5.   

    可能说得不够清楚,我现在主要是在把文件读入到内存中,然后调用dll处理,只是把内存中的内容传入到dll中,我想用char 类型来传递,我现在有两个问题,1是内容太长,会不会超出限制,2是我传入以后,在dll中如何能够比较方便的按行分离字符串,然后处理一行字符串?
      

  6.   

    传指针嘛,另传个long型参数传递字符串长度。
      

  7.   

    1.不存在内容太长的问题,除非你在读文件的时候就已有问题了.2.按行处理,使用strtok函数.