<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: API DATABASE_CONTROL EXAMPLE ERROR in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267838#M3500</link>
    <description>Hello,&lt;BR /&gt;
&lt;BR /&gt;
Could you please tell us, which version of the API Development Kit and Visual Studio are you using?&lt;BR /&gt;
&lt;BR /&gt;
Thanks,&lt;BR /&gt;
Dénes</description>
    <pubDate>Thu, 06 Dec 2018 09:40:42 GMT</pubDate>
    <dc:creator>dfintha</dc:creator>
    <dc:date>2018-12-06T09:40:42Z</dc:date>
    <item>
      <title>API DATABASE_CONTROL EXAMPLE ERROR</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267837#M3499</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;I went through the post in the following link &lt;A href="https://Archicad-talk.Graphisoft.com/viewtopic.php?f=23&amp;amp;t=62110" target="_blank" rel="noopener"&gt;https://Archicad-talk.Graphisoft.com/viewtopic.php?f=23&amp;amp;t=62110&lt;/A&gt; and changed the following lines of code to run the project.&lt;BR /&gt;&lt;BR /&gt;before&lt;BR /&gt;DBASSERT (book-&amp;gt;save (UNISTR_TO_LIBXLSTR(filepath)));&lt;BR /&gt;book-&amp;gt;release ();&lt;BR /&gt;&lt;BR /&gt;after&lt;BR /&gt;bool aaaa= book-&amp;gt;save (UNISTR_TO_LIBXLSTR(filepath))&lt;BR /&gt;book-&amp;gt;release();&lt;BR /&gt;&lt;BR /&gt;But I keep getting the following errors in the GSException.hpp file. Can I know the problem?
&lt;BLOCKQUOTE&gt;Severity Code Description Project File Line Suppression State&lt;BR /&gt;Warning C4189 'aaaa': local variable is initialized but not referenced Database_Control C:\Program Files\Graphisoft\API Development Kit 22.3004\Examples\Database_Control\Src\Database_Control.cpp 1458 &lt;BR /&gt;&lt;BR /&gt;Severity Code Description Project File Line Suppression State&lt;BR /&gt;Error (active) E0028 expression must have a constant value Database_Control C:\Program Files\Graphisoft\API Development Kit 22.3004\Support\Modules\GSRoot\GSException.hpp 62 &lt;BR /&gt;&lt;BR /&gt;Severity Code Description Project File Line Suppression State&lt;BR /&gt;Error (active) E0028 expression must have a constant value Database_Control C:\Program Files\Graphisoft\API Development Kit 22.3004\Support\Modules\GSRoot\GSException.hpp 62 &lt;BR /&gt;&lt;BR /&gt;Severity Code Description Project File Line Suppression State&lt;BR /&gt;Error (active) E0145 member "GS::GSException::AlignOfUniString" may not be initialized Database_Control C:\Program Files\Graphisoft\API Development Kit 22.3004\Support\Modules\GSRoot\GSException.hpp 56 &lt;BR /&gt;&lt;BR /&gt;Severity Code Description Project File Line Suppression State&lt;BR /&gt;Error (active) E0145 member "GS::GSException::SizeOfUniString" may not be initialized Database_Control C:\Program Files\Graphisoft\API Development Kit 22.3004\Support\Modules\GSRoot\GSException.hpp 57 &lt;BR /&gt;&lt;BR /&gt;Severity Code Description Project File Line Suppression State&lt;BR /&gt;Error C2220 warning treated as error - no 'object' file generated Database_Control C:\Program Files\Graphisoft\API Development Kit 22.3004\Examples\Database_Control\Src\Database_Control.cpp 1458&lt;/BLOCKQUOTE&gt;
code for Database_Control.cpp file
&lt;PRE&gt;static void	Do_ExportWallsToExcel (void)
{
	DBPrintf ("Exporting walls to Excel document...\n");

	libxl::Book* book = xlCreateXMLBook ();
	libxl::Sheet* sheet = book-&amp;gt;addSheet (UNISTR_TO_LIBXLSTR (GS::UniString("Walls exported from Archicad")));

	libxl::Font* guidFormatFont = book-&amp;gt;addFont ();
	guidFormatFont-&amp;gt;setSize (6);
	guidFormatFont-&amp;gt;setColor (libxl::COLOR_GRAY50);
	libxl::Format* guidFormat = book-&amp;gt;addFormat ();
	guidFormat-&amp;gt;setFont (guidFormatFont);

	GS::Array&amp;lt;GS::UniString&amp;gt; titles;
	titles.Push ("GUID");
	titles.Push ("Height");
	titles.Push ("BeginCoordX");
	titles.Push ("BeginCoordY");
	titles.Push ("EndCoordX");
	titles.Push ("EndCoordY");

	for (UIndex i = 0; i &amp;lt; titles.GetSize (); ++i) {
		sheet-&amp;gt;writeStr (0, i, UNISTR_TO_LIBXLSTR (titles&lt;I&gt;));
	}

	GS::Array&amp;lt;API_Guid&amp;gt; apiguids;
	ACAPI_Element_GetElemList (API_WallID, &amp;amp;apiguids);
	for (UIndex i = 0; i &amp;lt; apiguids.GetSize (); ++i) {
		GS::Guid gsguid = APIGuid2GSGuid (apiguids&lt;I&gt;);

		API_Element element = {};
		element.header.guid = apiguids&lt;I&gt;;
		GSErrCode err = ACAPI_Element_Get (&amp;amp;element);
		if (err != NoError) {
			DBPrintf ("ACAPI_Element_Get returned error (%d) for GUID '%s'\n", err,
					  gsguid.ToUniString ().ToCStr ().Get ());
			continue;
		}

		API_WallType&amp;amp; wall = element.wall;
		//DBPrintf ("GUID '%s'\n", gsguid.ToUniString ().ToCStr ().Get ());

		sheet-&amp;gt;writeStr (i + 1, 0, UNISTR_TO_LIBXLSTR (gsguid.ToUniString ()), guidFormat);
		sheet-&amp;gt;writeNum (i + 1, 1, wall.height);
		sheet-&amp;gt;writeNum (i + 1, 2, wall.begC.x);
		sheet-&amp;gt;writeNum (i + 1, 3, wall.begC.y);
		sheet-&amp;gt;writeNum (i + 1, 4, wall.endC.x);
		sheet-&amp;gt;writeNum (i + 1, 5, wall.endC.y);
	}

	IO::Location location;
	IO::fileSystem.GetSpecialLocation (IO::FileSystem::UserDocuments, &amp;amp;location);
	
	location.AppendToLocal (IO::Name ("export.xlsx"));
	GS::UniString filepath;
	location.ToPath (&amp;amp;filepath);
	
	DBASSERT (book-&amp;gt;save (UNISTR_TO_LIBXLSTR(filepath)));
	book-&amp;gt;release ();

	DBPrintf ("Export operation finished\n");
}&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/PRE&gt;
code for GSException.hpp file
&lt;PRE&gt;&lt;I&gt;
&lt;/I&gt;// *****************************************************************************
//
//                              Class GSException
//
// Module:			GSRoot
// Namespace:		GS
// Contact person:	MB, FGY, MM
//
// SG compatible
//
// *****************************************************************************

#ifndef GSEXCEPTION_HPP
#define GSEXCEPTION_HPP

#pragma once


#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;exception&amp;gt;
#include &amp;lt;new&amp;gt;

#include "GSRootExport.hpp"
#include "Definitions.hpp"
#include "GSDebug.hpp"

namespace GS { class ClassInfo; }
namespace GS { class OChannel; }
namespace GS { class UniString; }

#include "StackInfo.hpp"

// Undefine Windows Macros, we want to use "GetMessage"

#if defined (WINDOWS)
#if defined (GetMessage)
#undef GetMessage
#endif
#endif


// ============================== Class GSException ==============================
#define GS_EXCEPTIONS_DLL_EXPORTED

namespace GS {

#define GS_EXCEPTIONS_INLINE
#define GS_EXCEPTIONS_GSROOT_DLL_EXPORT GSROOT_DLL_EXPORT

class GSROOT_DLL_EXPORT GSException {
	// DECLARE_DYNAMIC_CLASS
public:
	typedef StackInfoCustomDepth&amp;lt;128&amp;gt; StackInfo;

private:
	static constexpr USize			AlignOfUniString = alignof (void*);
	static constexpr USize			SizeOfUniString  = 2 * sizeof (void*);

	Int32							id;				// this is the equivalent error id (it is the same for the given type of exception)

	GS::UniString&amp;amp;					message;		// additional message for the exception from the thrower (if it isn't nullptr)
	alignas (AlignOfUniString) char	messageStorage[SizeOfUniString];

	const char*						fileName;		// name of file where the exception was thrown from (if it isn't nullptr)
	UInt32							lineNumber;		// line number where the exception was thrown from (if it isn't 0)
	GSException*					cause;			// exception chaining

	GSException::StackInfo			stackInfo;

	void				SetCause (const GSException* cause);
	void				SetCause (const GSException&amp;amp; cause);

public:
		// Constructors

		  explicit GSException (const char*	message = nullptr,
					  const char*			fileName = nullptr,
					  UInt32				lineNumber = 0,
					  const GSException*	cause = nullptr,
					  Int32					id = 0					// should be wired in all of the derived classes
					  );

		  explicit GSException (const char*	message,
					  const char*			fileName,
					  UInt32				lineNumber,
					  const GSException&amp;amp;	cause,
					  Int32					id						// should be wired in all of the derived classes
					  );

		  explicit GSException (const GS::UniString&amp;amp;	message,
					  const char*			fileName = nullptr,
					  UInt32				lineNumber = 0,
					  const GSException*	cause = nullptr,
					  Int32					id = 0					// should be wired in all of the derived classes
					  );

		  explicit GSException (
					  const GS::UniString&amp;amp;	message,
					  const char*			fileName,
					  UInt32				lineNumber,
					  const GSException&amp;amp;	cause,
					  Int32					id					   // should be wired in all of the derived classes
					  );

		  GSException (const GSException&amp;amp; source);

		  virtual ~GSException () throw ();

		// User interface
			void							SetMessage	   (const GS::UniString&amp;amp; message);
			void							SetMessage	   (const char* message);

			virtual const char*				GetName        (void) const;
			virtual Int32					GetID		   (void) const;

			virtual const GS::UniString&amp;amp;	GetMessage	   (void) const;
			virtual const char*				GetFileName	   (void) const;
			virtual UInt32					GetLineNumber  (void) const;

			virtual GSException*			Clone		   (void) const;

			virtual void					Print		   (OChannel&amp;amp; oc) const;
			virtual void					Dump		   (OChannel&amp;amp; oc) const;

			virtual const GSException*		GetCause	   () const;
			virtual GSException*			GetCause	   ();

			virtual const StackInfo&amp;amp;		GetStack	   () const;

			GSException&amp;amp;					operator= (const GSException&amp;amp; source);

};


extern const GSROOT_DLL_EXPORT	GSException NoCauseException;	// Special value used when there's no cause of the exception

typedef GSException Exception; // GS::Exception

// ______________________________ Class GSException ______________________________



// ======================= GSException hierarchy framework =======================

class GS_EXCEPTIONS_GSROOT_DLL_EXPORT RootException : virtual public GSException {
public:
	explicit RootException (const char* msg, const char* fName, UInt32 lNumber, const GSException&amp;amp; cause_) :
		GSException (msg, fName, lNumber, cause_, (Int32)Error)
	{}
	explicit RootException (const char* msg = nullptr, const char* fName = nullptr, UInt32 lNumber = 0) :
		GSException (msg, fName, lNumber, nullptr, (Int32)Error)
	{}
	explicit RootException (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber, const GSException&amp;amp; cause_) :
		GSException (msg, fName, lNumber, cause_, (Int32)Error)
	{}
	explicit RootException (const GS::UniString&amp;amp; msg, const char* fName = nullptr, UInt32 lNumber = 0) :
		GSException (msg, fName, lNumber, nullptr, (Int32)Error)
	{}
	virtual const char* GetName () const override;
	virtual GSException* Clone (void) const override;
};

class GS_EXCEPTIONS_GSROOT_DLL_EXPORT GeneralException : virtual public GSException {
public:
	explicit GeneralException (const char* msg, const char* fName, UInt32 lNumber, const GSException&amp;amp; cause_) :
		GSException (msg, fName, lNumber, cause_, (Int32)Error)
	{}
	explicit GeneralException (const char* msg = nullptr, const char* fName = nullptr, UInt32 lNumber = 0) :
		GSException (msg, fName, lNumber, nullptr, (Int32)Error)
	{}
	explicit GeneralException (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber, const GSException&amp;amp; cause_) :
		GSException (msg, fName, lNumber, cause_, (Int32)Error)
	{}
	explicit GeneralException (const GS::UniString&amp;amp; msg, const char* fName = nullptr, UInt32 lNumber = 0) :
		GSException (msg, fName, lNumber, nullptr, (Int32)Error)
	{}
	virtual const char* GetName () const override;
	virtual GSException* Clone (void) const override;
};

#define	DECLARE_EXCEPTION_CLASS_WITH_CLASS_SPEC(classSpec, className, baseClassName, errId)		\
	class classSpec: virtual public baseClassName {											\
	public:																			\
		explicit className (const char* msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause); \
		explicit className (const char* msg = nullptr, const char* fName = nullptr, UInt32 lNumber = 0); \
		explicit className (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause); \
		explicit className (const GS::UniString&amp;amp; msg, const char* fName = nullptr, UInt32 lNumber = 0); \
		virtual const char* GetName () const override; \
		virtual GS::GSException* Clone (void) const override; \
	};

#define	DECLARE_EXCEPTION_CLASS(className, baseClassName, errId, exportdef) \
	DECLARE_EXCEPTION_CLASS_WITH_CLASS_SPEC(exportdef className, className, baseClassName, errId)

#define	DECLARE_EXCEPTION_CLASS_NO_EXPORTDEF(className, baseClassName, errId) \
	DECLARE_EXCEPTION_CLASS_WITH_CLASS_SPEC(className, className, baseClassName, errId)

#define	IMPLEMENT_EXCEPTION_CLASS_WITH_NAMESPACE(classNameWithNamespace, className, baseClassName, errId)		\
	classNameWithNamespace::className (const char* msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause): \
			GS::GSException (msg, fName, lNumber, cause, errId), baseClassName () {}	\
	classNameWithNamespace::className (const char* msg, const char* fName, UInt32 lNumber): \
			GS::GSException (msg, fName, lNumber, nullptr, errId), baseClassName () {}	\
	classNameWithNamespace::className (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause): \
			GS::GSException (msg, fName, lNumber, cause, errId), baseClassName () {}	\
	classNameWithNamespace::className (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber): \
			GS::GSException (msg, fName, lNumber, nullptr, errId), baseClassName () {}	\
	const char* classNameWithNamespace::GetName () const { return #className; } \
	GS::GSException* classNameWithNamespace::Clone (void) const { return new className (*this); }

#define	IMPLEMENT_EXCEPTION_CLASS(className, baseClassName, errId)		\
	IMPLEMENT_EXCEPTION_CLASS_WITH_NAMESPACE (className, className, baseClassName, errId)

#define	DECLARE_EXCEPTION_CLASS2(className, baseClassName1, baseClassName2, errId, exportdef)	\
	class exportdef className: virtual public baseClassName1, virtual public baseClassName2 {					\
	public:																			\
	explicit className (const char* msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause); \
	explicit className (const char* msg = nullptr, const char* fName = nullptr, UInt32 lNumber = 0); \
	explicit className (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause); \
	explicit className (const GS::UniString&amp;amp; msg, const char* fName = nullptr, UInt32 lNumber = 0); \
		virtual const char* GetName () const override; \
		virtual GS::GSException* Clone (void) const override; \
	};

#define	IMPLEMENT_EXCEPTION_CLASS2(className, baseClassName1, baseClassName2, errId)		\
	className::className (const char* msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause): \
			 GS::GSException (msg, fName, lNumber, cause, errId), baseClassName1 (), baseClassName2 () {}	\
	className::className (const char* msg, const char* fName, UInt32 lNumber): \
			 GS::GSException (msg, fName, lNumber, nullptr, errId), baseClassName1 (), baseClassName2 () {}	\
	className::className (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber, const GS::GSException&amp;amp; cause): \
			GS::GSException (msg, fName, lNumber, cause, errId), baseClassName1 (), baseClassName2 ()  {}	\
	className::className (const GS::UniString&amp;amp; msg, const char* fName, UInt32 lNumber): \
			GS::GSException (msg, fName, lNumber, nullptr, errId), baseClassName1 (), baseClassName2 ()  {}	\
	const char* className::GetName () const { return #className; } \
	GS::GSException* className::Clone (void) const { return new className (*this); }


DECLARE_EXCEPTION_CLASS (LogicErrorException,  GeneralException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS (PreconditionException, LogicErrorException, ErrParam, GSROOT_DLL_EXPORT)
		DECLARE_EXCEPTION_CLASS (IllegalArgumentException, PreconditionException, ErrParam, GSROOT_DLL_EXPORT)
			DECLARE_EXCEPTION_CLASS (IllegalReferenceException,	IllegalArgumentException, ErrParam, GSROOT_DLL_EXPORT)
			DECLARE_EXCEPTION_CLASS (NullPointerException,		IllegalArgumentException, ErrParam, GSROOT_DLL_EXPORT)
			DECLARE_EXCEPTION_CLASS (NullReferenceException,	IllegalArgumentException, ErrParam, GSROOT_DLL_EXPORT)
			DECLARE_EXCEPTION_CLASS (NullHandleException,		IllegalArgumentException, ErrParam, GSROOT_DLL_EXPORT)
			DECLARE_EXCEPTION_CLASS (EmptyHandleException,		IllegalArgumentException, ErrParam, GSROOT_DLL_EXPORT)
			DECLARE_EXCEPTION_CLASS (IllegalTypeException,		IllegalArgumentException, ErrParam, GSROOT_DLL_EXPORT)
DECLARE_EXCEPTION_CLASS (RunTimeErrorException, GeneralException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS  (AccessViolationException,  RunTimeErrorException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS  (LimitViolationException,  RunTimeErrorException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS  (ConversionErrorException, RunTimeErrorException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS  (InternalErrorException,   RunTimeErrorException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS  (IllegalStateException,   RunTimeErrorException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS  (UnsupportedOperationException,   RunTimeErrorException, Error, GSROOT_DLL_EXPORT)
	DECLARE_EXCEPTION_CLASS2 (OutOfMemoryException,     RunTimeErrorException, std::bad_alloc, ErrMemoryFull, GSROOT_DLL_EXPORT)

// General implementation of the precondition

#define PRECOND_IMP(preCondition, exception)			\
	if (!(preCondition)) {								\
	DBBREAK ();											\
	throw exception (nullptr, __FILE__, __LINE__);			\
	}


	// Preconditions that will be compiled only into the debug and test versions

#define PRECOND(condition)		DBASSERT(condition)
#define ARG_CHECK(condition)	DBASSERT(condition)
#define REF_CHECK(condition)	DBASSERT(condition)
#define NULL_PTR_CHECK(ptr)		DBASSERT(ptr != nullptr)
#define NULL_REF_CHECK(ref)		DBASSERT(&amp;amp;ref != nullptr)
#define TYPE_CHECK(condition)	DBASSERT(condition)


	// Preconditions that will always be compiled (debug, test and release)

#define PRECOND_R(condition)	PRECOND_IMP(condition,    GS::PreconditionException)
#define ARG_CHECK_R(condition)	PRECOND_IMP(condition,    GS::IllegalArgumentException)
#define REF_CHECK_R(condition)	PRECOND_IMP(condition,    GS::IllegalReferenceException)
#define NULL_PTR_CHECK_R(ptr)	PRECOND_IMP(ptr != nullptr,  GS::NullPointerException)
#define NULL_REF_CHECK_R(ref)	PRECOND_IMP(&amp;amp;ref != nullptr, GS::NullReferenceException)
#define TYPE_CHECK_R(condition)	PRECOND_IMP(condition,    GS::IllegalTypeException)

// _______________________ GSException hierarchy framework _______________________

}

#endif

&lt;/PRE&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 04 Oct 2022 14:51:53 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267837#M3499</guid>
      <dc:creator>SajW</dc:creator>
      <dc:date>2022-10-04T14:51:53Z</dc:date>
    </item>
    <item>
      <title>Re: API DATABASE_CONTROL EXAMPLE ERROR</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267838#M3500</link>
      <description>Hello,&lt;BR /&gt;
&lt;BR /&gt;
Could you please tell us, which version of the API Development Kit and Visual Studio are you using?&lt;BR /&gt;
&lt;BR /&gt;
Thanks,&lt;BR /&gt;
Dénes</description>
      <pubDate>Thu, 06 Dec 2018 09:40:42 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267838#M3500</guid>
      <dc:creator>dfintha</dc:creator>
      <dc:date>2018-12-06T09:40:42Z</dc:date>
    </item>
    <item>
      <title>Re: API DATABASE_CONTROL EXAMPLE ERROR</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267839#M3501</link>
      <description>Hello,&lt;BR /&gt;
&lt;BR /&gt;
Thanks for the reply.&lt;BR /&gt;
API Development Kit 22.3004&lt;BR /&gt;
Visual Studio 2017</description>
      <pubDate>Fri, 07 Dec 2018 14:55:03 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267839#M3501</guid>
      <dc:creator>SajW</dc:creator>
      <dc:date>2018-12-07T14:55:03Z</dc:date>
    </item>
    <item>
      <title>Re: API DATABASE_CONTROL EXAMPLE ERROR</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267840#M3502</link>
      <description>Hi SajW,&lt;BR /&gt;
&lt;BR /&gt;
ARCHICAD 21 and 22 both use the Visual Studio 2015 compiler for building add-on projects.&lt;BR /&gt;
You can use Visual Studio 2017 of course, but please make sure to set Visual Studio 2015 (v140) platform toolset (see attached image below).&lt;BR /&gt;
&lt;BR /&gt;
For further informations please read our blog post about working in Visual Studio 2017: &lt;A href="http://archicadapi.graphisoft.com/working-in-visual-studio-2017" target="_blank"&gt;&lt;LINK_TEXT text="http://archicadapi.graphisoft.com/worki ... tudio-2017"&gt;http://archicadapi.graphisoft.com/working-in-visual-studio-2017&lt;/LINK_TEXT&gt;&lt;/A&gt;&lt;BR /&gt;
&lt;BR /&gt;
Regards,&lt;BR /&gt;
Tibor&lt;BR /&gt;</description>
      <pubDate>Sat, 15 Dec 2018 09:01:24 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267840#M3502</guid>
      <dc:creator>Tibor Lorantfy</dc:creator>
      <dc:date>2018-12-15T09:01:24Z</dc:date>
    </item>
    <item>
      <title>Re: API DATABASE_CONTROL EXAMPLE ERROR</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267841#M3503</link>
      <description>I have followed the steps given in the blog post and the Platform Toolset is set to Visual Studio 2015(v140), but I keep on getting the same errors.</description>
      <pubDate>Mon, 17 Dec 2018 01:35:17 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267841#M3503</guid>
      <dc:creator>SajW</dc:creator>
      <dc:date>2018-12-17T01:35:17Z</dc:date>
    </item>
    <item>
      <title>Re: API DATABASE_CONTROL EXAMPLE ERROR</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267842#M3504</link>
      <description>It worked when I tried with Visual Studio 2015</description>
      <pubDate>Thu, 20 Dec 2018 07:18:37 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/API-DATABASE-CONTROL-EXAMPLE-ERROR/m-p/267842#M3504</guid>
      <dc:creator>SajW</dc:creator>
      <dc:date>2018-12-20T07:18:37Z</dc:date>
    </item>
  </channel>
</rss>

