我在程序里写了如下代码:
long x,y;
char* str;
_variant_t x1,y1,str1 ;
x = 0;y = 0;str = "iloveyou"; x1 = _variant_t(x);y1 = _variant_t(y);str1 = _variant_t(str);
为什么出现下面的错误呢?
Linking...
LIBC.lib(malloc.obj) : error LNK2005: _malloc already defined in msvcrtd.lib(MSVCRTD.dll)
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
Debug/ATM.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.ATM.exe - 2 error(s), 1 warning(s)请高手指教!!

解决方案 »

  1.   

    怎么又是这样的问题Project -> Add To Project -> file 加入相应的*.lib文件并在 Project -> Settings 下的LINK属性页察看是否加载了
      

  2.   

    好象不是的吧,是.lib文件中的宏定义冲突了,但我不知道怎么解决?望高手快来指教!!!
      

  3.   

    那在LINK属性页中显示的是什么?
      

  4.   

    long x,y;
    char* str;
    _variant_t x1,y1,str1 ;
    x = 0;y = 0;str = "iloveyou";
    这样的定义有问题吧str只是一个指针,并没有申请内存,我没有这样用过,我觉得一下的两种用法是正确的1、char *str = "iloveyou"
    2、char *str = new char[9];
    strcpy(str, "iloveyou")
      

  5.   

    _variant_t TheValue = MySet->GetCollect("FIELD_1");CString sValue=(char*)_bstr_t(TheValue);由于COM对象是跨平台的,它使用了一种通用的方法来处理各种类型的数据,因此CString 类和COM对象是不兼容的,我们需要一组API来转换COM对象和C++类型的数据。_vatiant_t和_bstr_t就是这样两种对象。它们提供了通用的方法转换COM对象和C++类型的数据。你自己看看这些,看有帮助么?
      

  6.   

    long x,y;
    CString str = _T("iloveyou");
    _variant_t x1,y1;VARIANT va;
    ::VariantInit(&va);
    va.vt = VT_BSTR;
    x = 0;y = 0;
    x1 = _variant_t(x);y1 = _variant_t(y);va.bstrVal = str.AllocSysString();
    楼上的大哥说的对,我后来查了资料,这样写就好了!不过还要感谢大家!