我想使用Dev-C++(版本4.9.9.2)和它自带的标准编译器重新编译某人的旧C++项目(我认为g ++使用MinGW )在Windows XP专业版SP3 32位。在文件中的一个strsafe.h包括,当我尝试编译,我得到这个错误:在strsafe.h中的','标记之前的预期主表达式
expected primary-expression before ',' token
,错误指向是strsafe.h(微软()库中的代码行头文件)全部看起来像这样:
hr = StringGetsExWorkerA(pszDest, cchDest, cbDest, NULL, NULL, 0);
对于这些行中的每一行都有2个“期望的主表达式”错误。我发现this forum thread这表明NULL值未被正确识别,并建议我在strsafe.h之前包含<cstddef>
。我这样做,它不起作用。此外,它似乎实际上定义了NULL,因为当我在包含strsafe.h之前'#define NULL 0'时,我得到一个错误,告诉我我正在重新定义它。
对不起,我不能提供任何更多的细节,但重现此错误的代码只是'#include <strsafe.h>
',所以我真的不知道还有什么要说的。有谁知道可能会发生什么,以及我如何解决这个问题?
谢谢!
(我已经尝试下载最新版本的Microsoft平台SDK,所以我有一个先进的最新版本strsafe.h的)
正在使用的SDK的版本是什么(strsafe.h的完整路径是什么)?我的Vista SDK拷贝没有提及StringGetsExWorkerA()。 – 2009-09-03 15:23:43
似乎有一个类似的问题在一个单独的论坛上提到:http://forums1.avsim.net/index.php?S =&6bf19a616003413c15cf25212fde2352 = showtopic&244719 PID = 1617949&ST = 0&#entry1617949。论坛特别提到了strsafe.h和MinGW。你可以试试他们解决这个问题的方法吗? – reuben 2009-09-04 04:17:19
我从这里下载了PSDK-x86版本:http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en#filelist(Windows®Server 2003 SP1平台SDK )。 strsafe.h的路径是“C:\ Program Files \ Microsoft Platform SDK \ Include \ strsafe.h”。 @Rueben:“解决方案”似乎是使用其他环境/编译器?我已经尝试过MSVC++,并且该项目还存在其他问题,但是您没有遇到我在此处询问的问题。 – Jordi 2009-09-04 07:49:07