如题,我听说VC的动态链接库不可以使用STL,想请教下大家,是这么回事吗?如果可以用的话,应该加哪些语句呢?
比如说,我在动态链接库中声明一个类,其中包含string的成员。

解决方案 »

  1.   

    导出类的参数类型以及接口函数的参数类型,尽量避免使用STL。避免使用的原因是不同版本的VC编译器的STL实现可能会有差异。
    动态链接库内部实现的话应该问题不大。
      

  2.   

    STRING是动态长度,EXE加入DLL,是将DLL的地址载入到进程当中去,你到处函数中如果有STRING这样的变长类型,
    编译器会选择一个默认长度,当你传入参数小于默认长度没问题,如果超过了,导致传入参数地址偏移。所以传字符串都是用CHAR[N] 或者TCHAR[N]固长结构,这不是STL或者CSTRING的问题,DLL 内部怎么用都是可以的。
      

  3.   

    可以,但是尽量不要再导出接口中使用,一定要使用char* 作为字符串的变量类型。
      

  4.   

    肯定可以,不过要保证调用者使用的stl和内部使用的是同一套。
      

  5.   

    Debug Assertion Failed!
    Expression:_CrtIsValidHeapPointer(pUserData)
    For information on how your program can cause an assertion failure,see the Visual C++ doucumentation on asserts.这是报错的提示