DLL导出函数返回结构体问题 如果用赋值方式的话,LPTSTR换成string或者wstring类型吧 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不好意思,没这样弄过有小的例子吗?我是用MFC dll DLL和EXE各自管理自己的内存,虽然可以互相访问,但不能在一个里面申请另一个里面释放所以需要传递大量数据的话,就在EXE里申请内存,将指针传给DLL函数,函数内直接将数据写入EXE申请的那块内存或者也可以反过来,DLL函数申请一块内存并将指针返回给EXE调用方,EXE使用完成后再通过另一个DLL函数释放这块内存至于STL里面的std::string等等标准容器,放弃吧,这玩意不能跨DLL,甚至连跨LIB都会出问题不过这个结构体定义的真坑人,估计设计者也是个半吊子哪有在DLL接口上使用T类型的?你DLL使用多字节字符集EXE使用UNICODE字符集,哪怕两边都写得LPTSTR,也不是同一个类型被迫配合这种接口,楼主节哀吧 我写的是DLL,调用我是不用管的,可是我测试的时候发现了这个问题。应该和我无关。这个问题应该是调用者考虑的。但是做为程序员完美点好。 本帖最后由 VisualEleven 于 2014-07-02 15:53:45 编辑 这不是完不完美的问题,这就是个错误的接口内存分配不能跨DLL,MFC对象不能跨DLL,UNICODE宏不能跨DLL,STL容器不能跨DLL,如果你的DLL做不到这些,那么调用者最好的选择就是不用这个DLL 弄好了,其实只要new个空间不要让申请的地址被销毁就可以了。 有关组合列表框的文字显示问题? VC中使用pdflib类库输出pdf文档 怎么可以修改字体啊?? 版主来催催哦!现在VC/MFC版块里结帖率怎么下降这么快呢? 关于窗口非客户区背景色的讨论? csdn 真让我失望!!我想哭!! 关于CPU ID 的简单问题,参与者有分! 我怎么样能动态的改变Group Box 控件的Caption??在线等待!!! 文件打开问题 sql server 关于触发器的一个问题 vc程序只有一个实例的问题 ADO里Open和Close的问题 VC6.0下能否创建控制台工程的工程模板?
我是用MFC dll
所以需要传递大量数据的话,就在EXE里申请内存,将指针传给DLL函数,函数内直接将数据写入EXE申请的那块内存
或者也可以反过来,DLL函数申请一块内存并将指针返回给EXE调用方,EXE使用完成后再通过另一个DLL函数释放这块内存
至于STL里面的std::string等等标准容器,放弃吧,这玩意不能跨DLL,甚至连跨LIB都会出问题不过这个结构体定义的真坑人,估计设计者也是个半吊子
哪有在DLL接口上使用T类型的?你DLL使用多字节字符集EXE使用UNICODE字符集,哪怕两边都写得LPTSTR,也不是同一个类型
被迫配合这种接口,楼主节哀吧
我写的是DLL,调用我是不用管的,可是我测试的时候发现了这个问题。应该和我无关。这个问题应该是调用者考虑的。但是做为程序员完美点好。
内存分配不能跨DLL,MFC对象不能跨DLL,UNICODE宏不能跨DLL,STL容器不能跨DLL,如果你的DLL做不到这些,那么调用者最好的选择就是不用这个DLL