VC6中 MFC exe中 new  纯C++ dll dll 崩溃 我把纯C++的 dll,用/MTd 换成/MDd.就能够了…
今天遇到一个问题,在一个dll工程中定义了一个返回值为string,参数为string的函数,然后在一个测试工程中调用,Release模式下一切正常Debug模式下整个函数的执行到return之前都毫无问题,然而在函数return后函数结束时总是堆栈错误崩溃,试了许久之后发现将参数改为char *就可以了,然后一搜发现大家都遇到了类似的问题,那就是:不要跨dll传递STL容器,string, vector, list等,导出的dll一定要用标准数据类型. 参考文章: C++中string跨DLL…
1.问题描述: 在一个MFC应用程序exe中,调用另一个DLL中的函数,函数中的一个形参是string类型的,每次调用都会出现乱码的情况. 调用前: 调用后: 2.原因分析: 不同的模块各自有一份C运行时库代码.或者根本没有C运行时库,导致了各个模块会有各自的堆.如果在A堆中申请空间,到B堆中释放就会有崩溃,在模块A申请的空间,必须在模块A中释放. 以STL的string为例,通过修改编译选项验证了这个问题.string在赋值的时候需要释放掉原来的内存空间,然后再申请新的内存空间存储新的内容,如…
在设置成/MD或/MDd不会导致出错 设置成/MT或/MTd的情况下会导致出错 看了CRT的实现,估计是因为fopen创建了CriticalSection来保护文件,但是在/MT的情况下,一个DLL里面的CriticalSection是不能被另外一个DLL使用的. 只是猜测啊............... 看了VS2008 里的CRT源码,发现_iob这个全局变量,每个操作FILE指针的函数都要操作这个变量处理多线程的功能. 而/MD模式把CRT库编译到同一个静态库里面,所以不会出现bug. 而…
今天在写一个函数,需要将map作为一个引用参数传入函数体内部进行赋值,结果编译通过,执行时总是崩溃,在网上找到了一些作者写的blog,详细解释了这种情况发生的原因,特转载在这里,便于自己今后查询. 原文1:有一个功能模块, 本来是写在主程序当中. 现在觉得有必要将它写成一个 DLL. 于是开始代码的移植. 费了好大的劲. 终于移植完成, 通过编译了. 这时运行程序, CRASH!调试之, 发现是在一个 map 的赋值出现了问题.看 vc6 自带的 STL 的代码: map 的赋值操作, 也就是其…
一.创建动态链接库文件 ** 1.打开VS2013,选择文件,新建工程  2.选择新建W32控制台应用程序,这里将工程名改为makeDLL  3.在应用程序类型中选择DLL,点击完成  4.完成以上步骤后,项目中会生成下列文件  5.下面创建自己编写的函数,以简单的求和函数add为例,首先在添加头文件createdll.h,createdll.h中的代码如下: #ifndef CREARDLL_H_ #define CREARDLL_H_ _declspec(dllexport) int add…
InstallShield 打包工具 1. 转载:http://blog.csdn.net/zhang_xinxiu/article/details/9099757 2. 转载:http://www.cnblogs.com/javawebsoa/archive/2013/04/05/3001632.html depends.exe http://bbs.csdn.net/topics/390858444…
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录.Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/.   方法一:使用Jsoncpp生成的lib文件   解压上面下载的Jsoncpp文件,在jsoncpp-src-0.5.0/makefiles/vs71目录里找到jsoncpp.sln,用VS…
原文:https://www.cnblogs.com/liaocheng/p/4243731.html JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记录.Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/.   方法一:使用Jsoncpp生成的lib文件   解压上面下载的Jsoncpp文件,在…
VS2005环境下的DLL应用 作者:一点一滴的Beer http://beer.cnblogs.com/ 以前写过一篇题为<VC++的DLL应用(含Demo演示)>的文章,当时是刚开始接触DLL,而且所讲到的一些DLL的应用都是比较浅层次的数据传递,基本不具备很强的实用性,而且所选用的开发环境是VC6.0,这次因为做做WinCE开发的过程中需要用到这个技术,所以进行了比较深入的研究,而且此次用的是VS2005开发环境,对比VC6.0的一些操作略有不同,所以重新进行了整理. 关于DLL的好处,…