https://blog.csdn.net/ranky2009/article/details/43565317
原文链接
有一篇文章
https://blog.csdn.net/lacoucou/article/details/78122074
再来一篇
https://blog.csdn.net/huapeng_guo/article/details/8276868
https://yq.aliyun.com/articles/9192
STL使用模板生成,当我们使用模板的时候,每一个EXE,和DLL都在编译器产生了自己的代码,导致模板所使用的静态成员不同步,所以出现数据传递的各种问题,下面是详细解释。
dll导出的代码
ClientRetCode HttpContext::AddHeaderContent(const string& strHeaderContent1){
cout << "string size: " << sizeof(strHeaderContent1) << endl;
调用
string header = "Connection:Keep-Alive";
cout << "string mgr size: " << sizeof(header) << endl;
if(CRC_SUCCESS!=pHC->AddHeaderContent(header)) {
CIS_WriteLog(CIS_LOG_Error,"HttpClient设置Keep-Alive失败");
return false;
}
执行结果
堆栈
分析:我这个应该是exe主程序和dll动态库使用的不同的stl库导致的内存布局不同。