读书人

new char 编译不过去解决办法

发布时间: 2012-04-24 14:15:38 作者: rapoo

new char 编译不过去

C/C++ code
UINT ThreadFunc(LPVOID p){    CFile * pFile = (CFile*)p;    wchar_t Title[200];    ULONGLONG FileLength = pFile->GetLength();    char * buf = new char[FileLength];    for(int i = 0; i < FileLength; i++)    {        //pFile->Read(buf, 1)    }    return 0;}1>------ 已启动生成: 项目: 客户端, 配置: Debug Win32 ------1>正在编译...1>客户端.cpp1> WINVER not defined. Defaulting to 0x0600 (Windows Vista)1>c:\users\administrator\desktop\网络\客户端\客户端.cpp(39) : warning C4244: “初始化”: 从“ULONGLONG”转换到“unsigned int”,可能丢失数据1>c:\users\administrator\desktop\网络\客户端\客户端.cpp(37) : warning C4101: “Title”: 未引用的局部变量1>正在链接...1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) 已经在 libcpmtd.lib(newaop.obj) 中定义1>C:\Users\Administrator\Desktop\网络\Debug\客户端.exe : fatal error LNK1169: 找到一个或多个多重定义的符号1>生成日志保存在“file://c:\Users\Administrator\Desktop\网络\客户端\Debug\BuildLog.htm”1>客户端 - 2 个错误,2 个警告========== 生成: 成功 0 个,失败 1 个,最新 1 个,跳过 0 个 ==========


[解决办法]
char * buf = new char[FileLength];
改成这样试试:
wchar_t * buf = new wchar_t[FileLength];
这么改恐怕也不行,因为FileLength不是个固定值,所以没法分配内存,得改成固定的值才行.
另外,你的程序是不是用的是UNICODE字符集,如果是,就得把char改成wchar_t


[解决办法]
nNewLen = (UINT)FileLength;
char * buf = new char[nNewLen];

[解决办法]
你这段代码我加在我的程序里的线程里,编绎没问题,看你的出错提示,是和new这个关键字重定义了.你看看是不是别的地方的问题
[解决办法]
你把整个完整的工程代码贴出来,或发给我,我看看,我9点前在线
[解决办法]
char * buf = (char *) malloc (sizeof(char)*FileLength);

读书人网 >VC/MFC

热点推荐