我现在用vs2005编译了一个dll动态库,里面有两个构造函数:
   Test(CString str);
   Test(int i);
然后用vc6.0创建了一个MFC对话框应用程序,如果用该动态库构造整形对象没有问题,编译通过,但是构造字符串对象时连接不通过,有高手知道为什么吗?有没有解决的办法?

解决方案 »

  1.   

    2005中CString默认是unicode
    vc6中默认是ansi
      

  2.   

    不对啊,我是这样调用的:Test test( _T("dd") );
      

  3.   

    改一下: Test test( L"dd" );
      

  4.   

    要改DLL项目属性,把字符集改成使用多字节字符集。
      

  5.   

    这样可能也不行,因为MFC版本不同,先试试吧,不行就不要传对象了。
      

  6.   

    改了一下: Test test( L"dd" );L没有定义,改为Test test( _L"dd" );也说没有定义
    编译还是没有通过
      

  7.   

    我想是CString类在2005和6.0下的类不一致所致,是不是有这么一个办法将2005里的Cstring转换成一种2005\6.0一致的类,这样应该可以解决问题吧?
      

  8.   

    Linking...
    LINK : warning LNK4075: ignoring /EDITANDCONTINUE due to /INCREMENTAL:NO specification
       Creating library Debug/useGridCtrl.lib and object Debug/useGridCtrl.exp
    useGridCtrlDlg.obj : error LNK2001: unresolved external symbol "public: __thiscall Test::Test(class CString)" (??0Test@@QAE@VCString@@@Z)
    Debug/useGridCtrl.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    Creating browse info file...useGridCtrl.exe - 2 error(s), 1 warning(s)
      

  9.   

    看来是不能用CString对象了,把CString改成char*等类型。
      

  10.   

    但是这种情况解决了,如果要用到别的mfc类,可能也会出现编译连接错误的情况,这样子也只能解决cstring的问题
      

  11.   

    不同版本的MFC之间,虽然类的名称相同,但类的定义可能会改变,所以本来就是不能传递对象的,如果需要,可以传递句柄值或传递对象中的内容。
      

  12.   

    我也有个相似的问题:
    我在vc6.0下调用vs2005的函数,出现连接错误
    vs2005代码:
    #pragma once
    #ifdef TEST_EXPORTS
    #define TEST_EXPORT  __declspec(dllexport)
    #else
    #define TEST_EXPORT __declspec(dllimport)
    #endifclass  TEST_EXPORT myTest
    {
    public:
    myTest(void);
    void  displayMessage( CString str );
    public:
    ~myTest(void);
    }; vc6.0这样调用:
        myTest dd;
       dd.displayMessage( _T("sss") );结果出现连接错误:
    Linking...
    myDlgDlg.obj : error LNK2001: unresolved external symbol "__declspec(dllimport) public: void __thiscall myTest::displayMessage(class CString)" (__imp_?displayMessage@myTest@@QAEXVCString@@@Z)
    Debug/myDlg.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.myDlg.exe - 2 error(s), 0 warning(s)就是参数为CString不行,请问是怎么回事,请高手多多指教
      

  13.   

    我也在VC2005里碰到CString的问题,编译不报错,但一使用到就会报错。
    在VC2005中我用到CString的地方,当然如果是跨了工程的话,全部改PCHAR(char*)。这样就应该好了。
      

  14.   

    我也在VC2005里碰到CString的问题,编译不报错,但一使用到就会报错。
    在VC2005中我用到CString的地方,当然如果是跨了工程的话,全部改PCHAR(char*)。这样就应该好了。