The CMarkup test MFC project should compile in Visual Studio 6.0 and newer versions without any problems. However, sometimes issues come up. It has been tested on Visual Studio 2003 and 2005 but there are different beta versions and options possible leading to minor differences.
See the following topics for additional information on compiling specific to STL and MSXML versions:
Under default project configuration, the CMarkup test project compiles under my copy of VS.NET 2003.
CStringData is a non-public implementation detail of the MFC
CString class used to determine the allocated memory available in the
CString object. But this developer answered his own question the next day: "afxdtctl.h needs to be included in stdafx.h".
VS 2005 Compilation with CMarkup 9.0
Nachiappan Narayanan 25-Nov-2007
I am trying to use the new Markup code (9.0 which combines STL & MFC) in Visual Studio 2005, Visual C++ Console Project without MFC dependency. I want to use purely STL, since we are building platform independent code. I set the preprocessor directive
MARKUP_STL. The project already has a
UNICODE defined. I get the following error:
error C2664: 'bool CMarkup::AddElem(CMarkup::MCD_CSTR,CMarkup::MCD_CSTR,int)' : cannot convert parameter 1 from 'const char *' to 'CMarkup::MCD_CSTR'
for this code:
std::string strValue; strValue = "xyz"; xml.AddElem(strValue.c_str(), "XYZ");
Only this seems to work:
CMarkup methods will expect
const wchar_t * instead of
const char *, i.e. wide strings are expected. Without
UNICODE, the preferred choice is to use UTF-8 strings which are the same as ASCII strings for characters in the ASCII range. An alternative to
_T() for specifying a wide string is
L"HL7Message" which might be more portable to non Visual Studio compilers.
Re: VS 2005 Compilation with CMarkup 9.0
Nachiappan Narayanan 26-Nov-2007
Actually I found the solution. Please add it to the web site documentation for Visual Studio 2005 users. By default, all Visual Studio projects have the
UNICODE settings attached. So if you want to use STL with MSVS 2005, do the following:
MARKUP_STDCboth in the project->configuration->C++->preprocessor area.
MARKUP_STL alone does not help, since portion of
UNICODE is loaded in the markup.h file "define" area. Only setting both, will enable the Standard library with STL.
Update September 27, 2008: With CMarkup release 10.0,
MARKUP_STDC is no longer used because dependency on tchar.h has been removed altogether. See also Unified CMarkup for STL and MFC.
Compile CMarkup class in Visual Studio.NET
I tried to compile the CMarkup class in Visual Studio .NET 2003 and it gave an error message "error C2065: 'CStringData', undeclared identifier". Could you shed some light on what minimal changes I could make to make it compile? I did not make any changes to the project settings. What I did was converted my Visual Studio project into a Visual Studio .NET 2003 project. And it gave me this error.