写了一个dll库,有些函数以std:string为参数,遇到一些有关问题,请问一下如何解决

写了一个dll库,有些函数以std::string为参数,遇到一些问题,请教一下怎么解决!
1、问题:
最近写了一个DLL库,内部使用STL,部分接口函数以const std::string&作为参数。在MFC程序中调用,Debug版本运行正常,Release版本莫名其妙的中断,初步判断是string参数为Bad_PTR,是不是有可能是string的创建和析构分别在主程序和DLL中导致的问题。另外DLL库内部类中使用std::map,用到了find等方法,可能也有一些问题。

我的另一个提问帖子有部分代码
http://topic.csdn.net/u/20120330/17/289f2c62-f651-423e-bdb8-4d93de67f2fc.html

2、我的解决办法:
将DLL程序和主程序Release版本中的Property -> C/C++ -> Code Generation -> Runtime Library 设置为Multi-threaded Debug DLL (/MDd),则主程序的Release版本也可以正常运行。
(在非MFC程序上测试不需做上面的设置运行也没有问题。)

3、请教:
我的主程序另外使用了一些DLL库,设置Multi-threaded Debug DLL (/MDd),则会报错。不知道有没有什么好办法解决。



------解决方案--------------------
内部使用stl没问题,但接口处就不要用stl
你release版用debug的crt?疯了?
------解决方案--------------------
是的,因为你这么使用那么就会遇到跨模块内存分配和释放的问题了。
最好就是不要在dll中使用stl如果有内存分配那么应该是在dll中分配就在dll中释放。
------解决方案--------------------
dll 的接口就好用纯C 的写,以避免许多不必要的麻烦。
安全快捷,若传类等,调用工程得在将dll相应的lib一同加入编译
------解决方案--------------------
确保了被注册的InterfaceNode,ComponentNode对象在RootNode中被访问时仍存在么?
------解决方案--------------------
DEBUG 和 RELEASE 版本不能混用。
 借口使用 std::string const & 应该没有问题。
------解决方案--------------------
以前碰到过一次,保证vs版本一样,
因为STL内存布局可能会根据版本不同而刚改
------解决方案--------------------
可能。
------解决方案--------------------
跨模块的接口中,参数和返回值都应该使用内置数据类型
------解决方案--------------------
探讨
我的DLL库是用VS2008写的,但是我的主程序是VS2005下的!是不是也可能是这个原因导致的问题呢!

------解决方案--------------------
如果你的库都用同一个版本VC基本没什么问题,换了版本就会出问题的,VS2008 跟VS2010的CTR实现
就有很大差别 比如vector 我试过 一传递进去就崩溃VS2008传递到2010的DLL
------解决方案--------------------
用不都不用想了 就是这个问题导致的,一般DLL不要传递一些第三方的库类型,尽量用自定义或者一些原始的数据类型 比如CHAR* int long等