Visual c++ Wince 5.0使用STLport void*新操作员(尺寸为t,void*)和x27;已经有一具尸体了

Visual c++ Wince 5.0使用STLport void*新操作员(尺寸为t,void*)和x27;已经有一具尸体了,visual-c++,windows-ce,stlport,Visual C++,Windows Ce,Stlport,我正在做从windows到wince的转换工作。 要使用iostream,我选择STLport5.2.1。 我在vs2008上遇到编译错误: am文件(x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(248):错误C2084:函数“void*运算符new(size\u t,void*)”已具有正文 2> D:\Program Files(x86)\Windows CE Tools\wce500\AthenaPBWS\inc

我正在做从windows到wince的转换工作。 要使用iostream,我选择
STLport5.2.1
。 我在vs2008上遇到编译错误:

am文件(x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(248):错误C2084:函数“void*运算符new(size\u t,void*)”已具有正文

2> D:\Program Files(x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../ARMV4I/new(71):请参阅以前对“new”的定义

2> d:\program files(x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(254):错误C2084:函数“void operator delete(void*,void*)”已具有正文

2> D:\Program Files(x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../ARMV4I/new(73):请参见前面的“删除”定义

2> Util1.cpp 2> D:\Program Files(x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../ARMV4I/new(72):错误C2084:函数“void*运算符new(size\u t,void*)”已具有正文

2> d:\program files(x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(247):请参见“新建”的先前定义

2> D:\Program Files(x86)\Windows CE Tools\wce500\AthenaPBWS\include\ARMV4I../ARMV4I/new(74):错误C2084:函数“void operator delete(void*,void*)”已具有正文

2> d:\program files(x86)\windows ce tools\wce500\athenapbws\mfc\include\wcealt.h(253):请参见前面的“删除”定义


如何解决此错误?

看起来您应该定义“放置新位置”内联-如果尚未定义,则它将执行以下操作:

/* Workaround when using MFCCE and using together: MFCCE's wcealt.h doesn't * check for __PLACEMENT_NEW_INLINE before defining operator new, so when * defines the operatore before, there will be an error C2084: * "function 'void *__cdecl operator new(unsigned int,void *)' already has a body". */ # ifdef _STLP_USE_MFC # define __PLACEMENT_NEW_INLINE # endif /*使用MFCCE和同时使用时的解决方法:MFCCE的wcealt.h不 *在定义运算符NEW之前,请检查_uplacement u NEW u INLINE,以便在 *定义运算符之前,将出现错误C2084: *“函数'void*u cdecl operator new(unsigned int,void*)”已经有一个主体”。 */ #如果定义为STLP,则使用MFC #定义\u放置\u新建\u内联 #恩迪夫
您必须在配置bat中添加字符串--rtl static。 这在wince上对我起了作用。dll的输出名称为stlport-x.5.2.dll

编辑

我发现了问题所在。我能够用/MD(DLL多线程)构建stlport看看
http://social.msdn.microsoft.com/Forums/en-US/vssmartdevicesnative/thread/fbae6f2a-4fc0-4610-a4b7-3d3d6bc6ac7e/

为Windows CE 5.0编译时,需要VS2005或VS2008。这两款产品都提供了适用于Windows CE的STL版本。当您只需要iostream时,为什么不使用此STL实现呢?我尝试在两者或中定义或取消定义uu PLACEMENT_NEW_INLINE,但它似乎无效。事实上,当我添加#ifdef _STLP_use_MFC#定义u PLACEMENT_NEW_INLINE#endif时对于wcealt.h,编译错误减少到2,相应的代码变为灰色。为什么编译器仍然告诉我错误C2084:函数“void*operator new(size\u t,void*)”已经有一个body。您不应该修改wcealt.h,在包含任何stl头之前放置任何stlport配置宏,或者更好地将其放在stlport\stl\config\user\u config.hI中。很抱歉,这没有帮助。你能告诉我更多的细节吗?