std::string 不能跨dll的一种解决方法

原创 2016年05月31日 11:30:17

 何志丹

如果函数很重要,那直接将实现放到头文件

//此函数违反声明与实现相分离的原因:
//stl跨dll会崩溃,理论上调用方的工程属性和本dll完全一样可以解决。都是MD或MDd。
//此函数很通用,调用的dll或exe太多,不一定能一致。
//static是防止某个项目(工程)的多个源文件使用了此函数而引起的重定义,理论上inline也可以解决重定义的问题。

 导出了类,此类有std::string公有成员,跨dll操作此成员也有此问题。

stl的版本众多,vector也不一定可以跨dll,比如:VC6的。

使用std::string 通过dll接口传递时,应该注意的问题

问题描述:         在一个lib库中用到了另外一个库的dll,lib库的运行时库是“多线程DLL(/MD)”,(属性 C/C++ ->代码生成->运行库),dll工程使用的运行库是“多线程调试...
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2016年01月08日 13:31
  • 2306

跨DLL传递std::string

今天又碰到从传递给另外一个DLL中的函数std::string参数, 并从该函数返回std::string的问题。参数传递进去后就不对了,返回值也不对(是空)。网上查了查,大致说,不要在DLL间传递S...
  • thinktalk
  • thinktalk
  • 2017年07月09日 11:48
  • 338

DLL中传递STL参数(std::string传引用崩溃)

目前我有一个dll, 有这么一个导出函数void func(const char* pszIn,std::string& out);但是这样会出现一个问题,因为out修改后的内存是dll里面分配的,然...
  • lacoucou
  • lacoucou
  • 2017年09月28日 11:50
  • 369

std::string跨模块需要注意设置

     当我从客户端调用DLL返回一个std::string的时候,发现当调用结束后,程序出现错误,后来在网搜索发现,原来是客户端与DLL端使用的是不一样的运行期库。最后将两个工程全部选择proje...
  • testing2007
  • testing2007
  • 2009年07月07日 15:56
  • 730

调用DLL中的对象的方法返回值为string时报错

调用DLL中的对象的方法返回值为string时报错!!!! 问题: 对象TDllNumber在objdll.dll中定义: objdll.dll输出一个函数:CreateObject ...
  • binnygoal
  • binnygoal
  • 2015年04月13日 15:21
  • 1156

std::string源码探秘和性能分析

std::string源码探秘和性能分析本文主要讲c++标准库的string的内部实现,以及对象拷贝的性能分析。...
  • ybxuwei
  • ybxuwei
  • 2016年05月05日 22:15
  • 5461

使用DLL进行不同语言之间的调用

转自http://blog.csdn.net/akirya/archive/2008/02/14/2093031.aspx__declspec(dllexport)是告诉编译器用来导出函数的,在代码中...
  • xilyu
  • xilyu
  • 2008年06月25日 10:59
  • 1045

LINK2019: unresolved external symbol "__declspec(dllimport) public: class std::basic_string的解决方案

相信很多人遇到过std:string的link2019错误,都没有一个很好的解决方法
  • u012878073
  • u012878073
  • 2015年02月28日 11:33
  • 1888

在DLL与EXE之间传递STL容器对象的问题总结

exemple1   DLL: insert(vector *   pvstr) { vstr-> push_back( "111 "); }   EXE: { ...
  • piaopiaohu123
  • piaopiaohu123
  • 2012年01月05日 09:54
  • 1084

DLL导出STL模板类和成员变量

// -------------------------------------------    // MYHEADER.H    //disable warnings on 255 char de...
  • tjcwt2011
  • tjcwt2011
  • 2017年05月19日 18:19
  • 240
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:std::string 不能跨dll的一种解决方法
举报原因:
原因补充:

(最多只允许输入30个字)