<?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: The life and death of CIO in Archicad C++ API</title>
    <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31280#M7975</link>
    <description>Hi Oleg,&lt;BR /&gt;
&lt;BR /&gt;
yes I understood what you said and this was just what I meant!&lt;BR /&gt;
We had the same trouble: how can I predict if my add-on will work or not with future releases?&lt;BR /&gt;
&lt;BR /&gt;
friendly&lt;BR /&gt;
Fabrizio</description>
    <pubDate>Tue, 01 Mar 2005 11:31:09 GMT</pubDate>
    <dc:creator>Fabrizio Diodati</dc:creator>
    <dc:date>2005-03-01T11:31:09Z</dc:date>
    <item>
      <title>The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31275#M7970</link>
      <description>&lt;DIV class="actalk-migrated-content"&gt;Hi everyone,&lt;BR /&gt;&lt;BR /&gt;We're planning to remove the CIO (Compatible IO) part of the InputOutput library. Its primary purpose was to provide a C interface to the InputOutput module, which was kept compatible accross maintenance releases (i.e. even if the InputOuput module was modified, the CIO interface was intact). Its drawback is that only part of the functionality of the InputOutput module was available through that interface. Please tell us if you relied heavily on its services, and also if it would take a huge amount of work to switch to normal IO calls (e.g. instead of CIO::File you would have to use IO::File from now).&lt;BR /&gt;&lt;BR /&gt;Thanks in advance,&lt;BR /&gt;&lt;BR /&gt;Akos&lt;/DIV&gt;</description>
      <pubDate>Tue, 14 Sep 2021 06:38:55 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31275#M7970</guid>
      <dc:creator>Akos Somorjai</dc:creator>
      <dc:date>2021-09-14T06:38:55Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31276#M7971</link>
      <description>Hi Akos,&lt;BR /&gt;
&lt;BR /&gt;
From your subject, I thought you were sharing an interesting story about a Chief Information Officer. &lt;E&gt;&lt;span class="lia-unicode-emoji" title=":winking_face:"&gt;😉&lt;/span&gt;&lt;/E&gt;&lt;BR /&gt;
&lt;BR /&gt;
Seriously though ... I haven't used CIO, so it's up to the other guys.  (Did you want this question in this forum, or in the general API one?)&lt;BR /&gt;
&lt;BR /&gt;
Best regards,&lt;BR /&gt;
Karl</description>
      <pubDate>Mon, 28 Feb 2005 18:23:55 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31276#M7971</guid>
      <dc:creator>Karl Ottenstein</dc:creator>
      <dc:date>2005-02-28T18:23:55Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31277#M7972</link>
      <description>I used both interfaces. But my code does not heavy rely on it,&lt;BR /&gt;
therefore I do not think, that I shall have the big issue move to IO.&lt;BR /&gt;
&lt;BR /&gt;
However, in general, compatibility across releases seems very&lt;BR /&gt;
important. I think, it concerns whole API but not just the IO&lt;BR /&gt;
module.&lt;BR /&gt;
If for example some Addon is compiled using 1 API release, then lets&lt;BR /&gt;
2 release of ArchiCAD released and corresponding API which has some&lt;BR /&gt;
binary incompatible changes, interface exported from some module DLL,&lt;BR /&gt;
or even some imlementation as there are exported C++ classes. This&lt;BR /&gt;
Addon can result a crash at using in the upgraded release of ArchiCAD.&lt;BR /&gt;
I dont know, may be the mechanism already exists, but I think, that if&lt;BR /&gt;
changes of interfaces are incompatible, ArchiCAD automatically should&lt;BR /&gt;
not load Addons compiled with previous incompatible API release ( like&lt;BR /&gt;
it works at changing of major version. And this API should be available&lt;BR /&gt;
ASAP for developers to recompile their AddOns. )&lt;BR /&gt;
&lt;BR /&gt;
Compatibility and versioning are always issues. Use of pure abstract&lt;BR /&gt;
interfaces is often more preferable than the chosen strategy of&lt;BR /&gt;
class export from the point of compatibility, but it certainly is not&lt;BR /&gt;
always convenient.</description>
      <pubDate>Mon, 28 Feb 2005 19:46:40 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31277#M7972</guid>
      <dc:creator>Oleg</dc:creator>
      <dc:date>2005-02-28T19:46:40Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31278#M7973</link>
      <description>I fully agree with Oleg: an ArchiCAD procedure should take care about add-ons loading depending of the AC release (I know this could be reached by the add-ons itself but it should be an AC procedure).&lt;BR /&gt;
&lt;BR /&gt;
About CIO: we heavily used it!&lt;BR /&gt;
But we could live without it. What is important, if GS will take the decision to discontinue it, is to get this warning and all the related documentation as soon as possible: fixing for these reason 12 add-ons could be a nightmare.&lt;BR /&gt;
&lt;BR /&gt;
Friendly&lt;BR /&gt;
Fabrizio</description>
      <pubDate>Tue, 01 Mar 2005 10:05:03 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31278#M7973</guid>
      <dc:creator>Fabrizio Diodati</dc:creator>
      <dc:date>2005-03-01T10:05:03Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31279#M7974</link>
      <description>&lt;BLOCKQUOTE&gt;Fabrizio wrote:&lt;BR /&gt;I fully agree with Oleg: an ArchiCAD procedure should take care about add-ons loading depending of the AC release (I know this could be reached by the add-ons itself but it should be an AC procedure).&lt;BR /&gt;
Friendly&lt;BR /&gt;
Fabrizio&lt;/BLOCKQUOTE&gt;

Yes, we can prevent loading of an Addon by itself checkung the current&lt;BR /&gt;
relase. It is acceptable for preventing its loading into some &lt;B&gt;previous&lt;/B&gt;&lt;BR /&gt;
relase, if it will need. However I meant an opposite case.&lt;BR /&gt;
When we have compiled an Addon based on some release, we can not&lt;BR /&gt;
predict, that one of the &lt;B&gt;next&lt;/B&gt; releases will be incompatible. Though&lt;BR /&gt;
technically it is possible to forbid loading the Addon for all relases&lt;BR /&gt;
except version used at compilation, but it is absolutely unacceptable&lt;BR /&gt;
practically. I may be mistaken, but IMHO this case should be handled&lt;BR /&gt;
by ArchiCAD.</description>
      <pubDate>Tue, 01 Mar 2005 11:27:10 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31279#M7974</guid>
      <dc:creator>Oleg</dc:creator>
      <dc:date>2005-03-01T11:27:10Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31280#M7975</link>
      <description>Hi Oleg,&lt;BR /&gt;
&lt;BR /&gt;
yes I understood what you said and this was just what I meant!&lt;BR /&gt;
We had the same trouble: how can I predict if my add-on will work or not with future releases?&lt;BR /&gt;
&lt;BR /&gt;
friendly&lt;BR /&gt;
Fabrizio</description>
      <pubDate>Tue, 01 Mar 2005 11:31:09 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31280#M7975</guid>
      <dc:creator>Fabrizio Diodati</dc:creator>
      <dc:date>2005-03-01T11:31:09Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31281#M7976</link>
      <description>Hi Fabrizio&lt;BR /&gt;
&lt;BR /&gt;
My English often is not so clear, therefore I use so many words to express the simple idea  &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_smile.gif" style="display : inline;" /&gt;</description>
      <pubDate>Tue, 01 Mar 2005 11:59:44 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31281#M7976</guid>
      <dc:creator>Oleg</dc:creator>
      <dc:date>2005-03-01T11:59:44Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31282#M7977</link>
      <description>Thanks to all for the feedback. And so the CIO interface will go away with Nautilus... R.I.P. &lt;IMG src="https://community.graphisoft.com/legacyfs/online/emojis/icon_cry.gif" style="display : inline;" /&gt;&lt;BR /&gt;
&lt;BR /&gt;
On the compatibility issue:&lt;BR /&gt;
- the current plan is that there will be no R2 releases (as it is now with ArchiCAD 9)&lt;BR /&gt;
- anyway we do our best to provide binary compatibility between Rx releases&lt;BR /&gt;
- if the interface of a C++ module changes, there are several cases:&lt;BR /&gt;
    1. your add-on won't load at all, because of DLL versioning (it won't find the appropriate DLL), so the LoadLibrary/GetDiskFragment call would fail&lt;BR /&gt;
    2. if the add-on loads, we can get the API version it was compiled with, and the Add-On Manager can reject the add-on if it's supposed to be incompatible&lt;BR /&gt;
    3. we can inform you well in advance that the interface will change, and provide the API kit that is compatible (getting the appropriate ArchiCAD version before release would still be a problem)&lt;BR /&gt;
&lt;BR /&gt;
(Of course you cannot prepare for the future, but you can prepare for the change.)&lt;BR /&gt;
&lt;BR /&gt;
BR,&lt;BR /&gt;
&lt;BR /&gt;
Akos</description>
      <pubDate>Tue, 01 Mar 2005 13:02:04 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31282#M7977</guid>
      <dc:creator>Akos Somorjai</dc:creator>
      <dc:date>2005-03-01T13:02:04Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31283#M7978</link>
      <description>Hi Akos,&lt;BR /&gt;
&lt;BR /&gt;
There is small question out of the subject.&lt;BR /&gt;
&lt;BR /&gt;
Does the AddOn Manager used the LoadLibrary function.&lt;BR /&gt;
Just in this case, can you to consider using the LoadLibraryEx with LOAD_WITH_ALTERED_SEARCH_PATH flag instead.&lt;BR /&gt;
So custom DLLs used by the AddOn will load from a Addon's folder.</description>
      <pubDate>Tue, 01 Mar 2005 13:56:38 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31283#M7978</guid>
      <dc:creator>Oleg</dc:creator>
      <dc:date>2005-03-01T13:56:38Z</dc:date>
    </item>
    <item>
      <title>Re: The life and death of CIO</title>
      <link>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31284#M7979</link>
      <description>&lt;BLOCKQUOTE&gt;Oleg wrote:&lt;BR /&gt;Does the AddOn Manager used the LoadLibrary function.&lt;BR /&gt;
Just in this case, can you to consider using the LoadLibraryEx with LOAD_WITH_ALTERED_SEARCH_PATH flag instead.&lt;BR /&gt;
So custom DLLs used by the AddOn will load from a Addon's folder.&lt;/BLOCKQUOTE&gt;

Yes, currently it is using LoadLibrary on Windows. I'll take a look at that. Currently custom DLLs are either loaded from ArchiCAD's folder, or manually from the add-on itself.&lt;BR /&gt;
&lt;BR /&gt;
Problem may arise from the fact that the LoadLibrary call is wrapped by the GSUtils module, and as such, called by many other parts of the application.&lt;BR /&gt;
&lt;BR /&gt;
Thanks,&lt;BR /&gt;
&lt;BR /&gt;
Akos</description>
      <pubDate>Thu, 03 Mar 2005 09:52:41 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Archicad-C-API/The-life-and-death-of-CIO/m-p/31284#M7979</guid>
      <dc:creator>Akos Somorjai</dc:creator>
      <dc:date>2005-03-03T09:52:41Z</dc:date>
    </item>
  </channel>
</rss>

