Code::Blocks使用CMarkup解析XML的问题
下面的代码编译运行正常:
#include <stdio.h>
#include <tchar.h>
#include "markup.h"
int _tmain(int argc, TCHAR* argv[], TCHAR* env[])
{
CMarkup xml;
xml.SetDoc(_T("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"));
xml.AddElem(_T("root"));
xml.AddChildElem(_T("child"));
xml.Save(_T("config.xml"));
return 0;
}
会输出以下的XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child/>
</root>
如果在代码前加上
#define UNICODE
则编译不过,提示:
D:\CodeBlocks_Projects\demo\main.cpp||In function 'int main(int, TCHAR**, TCHAR**)':|
D:\CodeBlocks_Projects\demo\main.cpp|11|error: no matching function for call to 'CMarkup::SetDoc(const char [40])'|
D:\CodeBlocks_Projects\demo\markup.h|277|note: candidates are: bool CMarkup::SetDoc(const wchar_t*)|
D:\CodeBlocks_Projects\demo\markup.h|278|note: bool CMarkup::SetDoc(const std::wstring&)|
D:\CodeBlocks_Projects\demo\main.cpp|12|error: no matching function for call to 'CMarkup::AddElem(const char [5])'|
D:\CodeBlocks_Projects\demo\markup.h|346|note: candidates are: bool CMarkup::AddElem(MCD_CSTR, MCD_CSTR, int)|
D:\CodeBlocks_Projects\demo\markup.h|350|note: bool CMarkup::AddElem(MCD_CSTR, int, int)|
D:\CodeBlocks_Projects\demo\main.cpp|13|error: no matching function for call to 'CMarkup::AddChildElem(const char [6])'|
D:\CodeBlocks_Projects\demo\markup.h|348|note: candidates are: bool CMarkup::AddChildElem(MCD_CSTR, MCD_CSTR, int)|
D:\CodeBlocks_Projects\demo\markup.h|352|note: bool CMarkup::AddChildElem(MCD_CSTR, int, int)|
||=== Build finished: 3 errors, 0 warnings ===|
[解决办法]
在工程设置对话框里加UNICODE,可行。