如果用赋值方式的话,LPTSTR换成string或者wstring类型吧

解决方案 »

  1.   

    不好意思,没这样弄过有小的例子吗?
    我是用MFC dll 
      

  2.   

    DLL和EXE各自管理自己的内存,虽然可以互相访问,但不能在一个里面申请另一个里面释放
    所以需要传递大量数据的话,就在EXE里申请内存,将指针传给DLL函数,函数内直接将数据写入EXE申请的那块内存
    或者也可以反过来,DLL函数申请一块内存并将指针返回给EXE调用方,EXE使用完成后再通过另一个DLL函数释放这块内存
    至于STL里面的std::string等等标准容器,放弃吧,这玩意不能跨DLL,甚至连跨LIB都会出问题不过这个结构体定义的真坑人,估计设计者也是个半吊子
    哪有在DLL接口上使用T类型的?你DLL使用多字节字符集EXE使用UNICODE字符集,哪怕两边都写得LPTSTR,也不是同一个类型
    被迫配合这种接口,楼主节哀吧
      

  3.   


    我写的是DLL,调用我是不用管的,可是我测试的时候发现了这个问题。应该和我无关。这个问题应该是调用者考虑的。但是做为程序员完美点好。
      

  4.   

    本帖最后由 VisualEleven 于 2014-07-02 15:53:45 编辑
      

  5.   

    这不是完不完美的问题,这就是个错误的接口
    内存分配不能跨DLL,MFC对象不能跨DLL,UNICODE宏不能跨DLL,STL容器不能跨DLL,如果你的DLL做不到这些,那么调用者最好的选择就是不用这个DLL
      

  6.   

    弄好了,其实只要new个空间不要让申请的地址被销毁就可以了。