vector作为参数传递到dll问题
最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况。这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中相应的数据问题,始终都获得不了正确的数据,要么就是一些非法的数据;另一个问题就是delete这个指针时候会产生相应异常(针对这个问题的思考:如果EXE和DLL都链接到DLL的C/C++运行期库,那么代码将能够很好地运行.但是,如果两个模块中的一个或者两个链接到静态C/C++运行期库,那delete的操作就会失败.)。这叫一个折腾的纠结啊。搜罗了一些网络资料以备以后的参考学习:
(1)对于STL,在DLL中使用的时候,往往存在这些问题,在网络上搜集了下,这些都是要平时使用STL的时候注意的。
(2) 从一个可执行程序中输出模板实例,在另一个可执行程序中引入此实例。例如:MyLibrary.DLL将vector <MyClass> 指针回传给MyProgram.EXE中的一个函数,需要在MyLibrary.DLL中输出MyClass类和vector <MyClass> 。在MyProgram.EXE中引入它们后。就可以得到MyLibrary.DLL中静态数据成员的一份Copy了。
这个是解决我这个问题的挺不错的方法,但是并为给予采纳和验证。毕竟为了保险起见最终还是选择了数组传递数据,但是还是要给予的原则是谁创建谁释放。否则还是会出问题我这里即便是调用delete[ ]objArray;这里的delete的并不知道要删除多大的内存,而这个要删除多大的内存信息是在dll中保存着的,那个dll中的delete才知道。DLL中分配的内存DLL要负责释放!(一个模块分配的内存要在同一个模块中释放!)
vector作为参数传递到dll问题相关推荐
- matlab vector函数参数,将vector作为参数传递
这两天在用c++写数值计算,手残选了个蛋疼的Boost库.boost的好处在于通用性,缺点--原型实在是太长了,make一下只要出一个error就被刷屏了(偶17寸屏幕18号字,谁让我是瞎子). 首先 ...
- c++内存管理的一些资料
C++内存分配方式详解--堆.栈.自由存储区.全局/静态存储区和常量存储区 如何动态调用DLL中的导出类 在dll中导出类,并结合继承带来的问题 如何更好的架构一个界面库,欢迎大家一起讨论 pimpl ...
- vector 作为dll 接口参数_DLL中传递STL参数,vector对象作为dll参数传递等问题(转)...
STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释. 原因分析:一句话-----如果 ...
- DLL中传递STL参数(如Vector或者list等)会遇到的问题[转载]
最近的一个项目中遇到了调用别人的sdk接口(dll库)而传给我的是一个vector指针,用完之后还要我来删除的情况.这个过程中首先就是在我的exe中将其vector指针转为相应指针再获取vector中 ...
- java.util.vector中的vector的详细用法
ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 import java.util.*; /** * 演示Vector的使用.包括Vector ...
- vector用法 java_java.util.vector中的vector的详细用法
/** *演示Vector的使用.包括Vector的创建.向Vector中添加元素.从Vector中删除元素.*统计Vector中元素的个数和遍历Vector中的元素.*/ public class ...
- Vector在Java编程中的应用
Vector 类提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大.在删除一些元素之后,数组变小. Vector 有三个构造函数, public Vector(int initialCap ...
- delphi dll创建及调用
第一章 DLL简单介绍 由于在目前的学习工作中,需要用到DLL文件,就学习了下,在这里作个总结. 首先装简单介绍下DLL: 1,减小可执行文件的大小 DLL技术的产生有很大一部分原因是为了减小可执行文 ...
- DLL资料(一) (转载)
LL资料(一)2008-07-08 16:49第一篇文章:关于INNO,让您更喜欢INNO, 异构数据库之间完全可以用SQL语句导数据 海量数据库的查询优化及分页算法方案 ClientDataSet的 ...
最新文章
- 计算两个字符串之间是否包含的简单方法
- 百度网页分享js代码
- Java_异常_03_ java.lang.NoClassDefFoundError: org/apache/commons/pool/KeyedObjectPoolFactory
- PyCharm没有run选项,只有run nosetests in XXX
- 网络虚拟化是否需要额外的网络架构?
- 暑训day1解题报告
- 【转载】linux环境下tcpdump源代码分析
- Golang--defer的mi魂汤
- 如何优化你的布局层级结构之RelativeLayout和LinearLayout及FrameLayout性能分析(二)...
- 利用Python获取数组或列表中最大的N个数及其索引
- TCL电视禁止第三方安装软件?如何远程给安卓智能电视强制安装安卓所有软件?
- VMware虚拟文件(.vmdk)瘦身(宿主为Windows)
- S-CMS医院建站系统XXE通用漏洞的利用与防御
- ubuntu18.04+opencv3.4.10+opencv3.4.10contrib+LSD使用
- pip2 python2.7 安装opencv-python cv2遇到问题的可能解决办法 skbuild list(pattern)
- 指针--指针的创建和指针的大小
- 创客平台靠什么盈利?
- 湖北省211大学计算机分数线,2017年211高校各省市录取分数线汇总
- 病毒木马查杀实战第026篇:“白加黑”恶意程序研究(上)
- 什么是class-agnostic,class-agnostic是什么意思