BIM Coordinator Program (INT) April 22, 2024

Find the next step in your career as a Graphisoft Certified BIM Coordinator!

Archicad C++ API
About Archicad add-on development using the C++ API.

Which Compiler?

Anonymous
Not applicable
There are a bunch of MicroSoft C++ compilers out there, in your opinion which should I buy to do API programming? I'm looking for compatibility, but also longevity. If I buy a compiler it had better last a few years -- I don't want to have to upgrade 2 years down the road.

6.0 Enterprise?
6.0 Pro?
.NET Standard 2003?
.NET Standard 2002?
.NET Pro 2003?
10 REPLIES 10
Ralph Wessel
Mentor
Jay wrote:
There are a bunch of MicroSoft C++ compilers out there, in your opinion which should I buy to do API programming? I'm looking for compatibility, but also longevity. If I buy a compiler it had better last a few years -- I don't want to have to upgrade 2 years down the road.
To quote the ArchiCAD API compatibility guide,
"On Windows you need Microsoft Visual C++ 6.0 or higher installed. Only the x86, 32 bit architecture is supported. You need to compile your add-ons with VC++ 6.0 to ensure full compatibility with ArchiCAD/PlotMaker."

We use VC++ v6 on Windows and CodeWarrior v8.3 on the Mac. I can't comment on compatibility with .NET Pro, but I have successfully used CodeWarrior for both Mac and Windows API development.

Don't look for longevity in anything related to software development - rapid change is the rule. CodeWarrior is updated on a yearly basis. The ArchiCAD API changes with every new release. The Mac OS is changing at a phenomenal pace at the moment.
Ralph Wessel BArch
stefan
Expert
For ArchiCAD DevKit 5.1 that's used with ArchiCAD 8.1, you need MS Visual C++ 6.0 (on Windows, that is). It doesn't matter if it's standard or professional or enterprise, since you'll only need the C/C++ compiler + runtime libraries and not the MFC and other Microsoft/Windows-specific features.

That said, the newer Visual C++.NET (2002/7.0 & 2003/7.1) are much better compilers and conform better to the C++ standards. Although you can't use VC++.NET with the ArchiCAD API, it might be interesting to ask a quote for this package and then add a "downgrade" to an older Visual C++ 6.0 (that is not free, but cheap). This might be an effective solution when you want to use other code as well:
e.g. on CodeGuru & CodeProject, two websites with lots of examples & tutorials, esp. on Windows Programming, they often have examples, but some are for VC++6.0 and other for the more recent versions VC++7.0 & VC++7.1.
FWIW, AutoCAD Object ARX development requires VC++7.0 (and not 7.1).

I have VC++6.0 & VC++7.0 installed and am expecting to install 7.1 because I need it for other projects.

But in short, you only know for sure that you'll be able to use VC++6.0 with ArchiCAD 8.1 and the DevKit 5.1.
--- stefan boeykens --- bim-expert-architect-engineer-musician ---
Archicad27/Revit2023/Rhino8/Unity/Solibri/Zoom
MBP2023:14"M2MAX/Sonoma+Win11
Archicad-user since 1998
my Archicad Book
Andras Babos
Graphisoft Alumni
Graphisoft Alumni
The Add-Ons developed for 8.x (and before) require the Visual C++ 6.0 compiler and runtime libraries. Although it might be possible to to use a newer compiler, Graphisoft hasn't investigated this deeper (and we don't intend to do so), so if you do this it's 'asking for trouble'.

On the other hand the upcoming ArchiCAD 9.0 version is compiled using the Visual C++ 7.1 (.NET 2003) compiler, so the API development requires the same compiler (and runtime libraries). (NOT Visual C++ 7.0 (VS .NET) compiler and runtime libraries!)

HTH:
Andras Babos.
Anonymous
Not applicable
Andras wrote:
On the other hand the upcoming ArchiCAD 9.0 version is compiled using the Visual C++ 7.1 (.NET 2003) compiler, so the API development requires the same compiler (and runtime libraries). (NOT Visual C++ 7.0 (VS .NET) compiler and runtime libraries!)
So, if I'm not planning on programming with the API until the fall, I should get 7.1, but if I want to start now, I should get 6.0 with the intent to upgrade when AC9.0 is released. Correct?
Karl Ottenstein
Moderator
Jay wrote:
So, if I'm not planning on programming with the API until the fall, I should get 7.1, but if I want to start now, I should get 6.0 with the intent to upgrade when AC9.0 is released. Correct?
Seems like a clever way to ask if 9.0 will be released in or before the fall, Jay. 😉

I don't know the schedule, but the answer is "yes" ...

Karl
One of the forum moderators
AC 27 USA and earlier   •   macOS Ventura 13.6.6, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Karl Ottenstein
Moderator
Andras wrote:
On the other hand the upcoming ArchiCAD 9.0 version is compiled using the Visual C++ 7.1 (.NET 2003) compiler, so the API development requires the same compiler (and runtime libraries). (NOT Visual C++ 7.0 (VS .NET) compiler and runtime libraries!).
Thought I'd share that the Visual C++ 7.1 compiler, linker and runtime libraries are available as a FREE download from Microsoft (hard to believe!) at:
http://msdn.microsoft.com/visualc/vctoolkit2003/

These are command line only, however, so not for the faint of heart. You can integrate this compiler into an existing (old) VC/VS environment. (A little trickey though, as my first test compile with the setup didn't result in a runable apx, even though it compiled and linked without errors...so you're on your own, unless someone else here has guidance.)

I ran across this link while reading reviews of VC++ .NET 2003 at amazon.com while considering the upgrade ... and the reviews there noted that the "Standard" edition of VC++ (what is available as a standalone product) does NOT include any optimization capability. Substituting this download fixes that.

Karl
One of the forum moderators
AC 27 USA and earlier   •   macOS Ventura 13.6.6, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Anonymous
Not applicable
Really?
I am used to think that binary code which compiled with higher version compiler may different with lower. And for add-ons, it may deadly error.

Are you sure we can compile source with higher version of C++?
stefan
Expert
Wolf wrote:
Really?
I am used to think that binary code which compiled with higher version compiler may different with lower. And for add-ons, it may deadly error.

Are you sure we can compile source with higher version of C++?
For ArchiCAD 8.1 development, you can only use Visual C++ 6.0 for development. It might be possible to tweak your Visual C++ 7.0 or 7.1 installation, so it uses the VC++6 compiler+linker.

For ArchiCAD 9.0 development... you have to wait untill it is released to have some official information.
--- stefan boeykens --- bim-expert-architect-engineer-musician ---
Archicad27/Revit2023/Rhino8/Unity/Solibri/Zoom
MBP2023:14"M2MAX/Sonoma+Win11
Archicad-user since 1998
my Archicad Book
Karl Ottenstein
Moderator
Wolf wrote:
Really?
I am used to think that binary code which compiled with higher version compiler may different with lower. And for add-ons, it may deadly error.

Are you sure we can compile source with higher version of C++?
Code is code (obj output of the compiler)... for a particular processor. The version of the compiler doesn't change anything about the target processor. It is the linkage and libraries, if anything, that can cause problems.

Karl
One of the forum moderators
AC 27 USA and earlier   •   macOS Ventura 13.6.6, MacBook Pro M2 Max 12CPU/30GPU cores, 32GB
Learn and get certified!