Visual Prolog 7.3 Upgrade Notes

This document describes how to upgrade Visual Prolog 7.2 projects to Visual Prolog 7.3, for older projects you should also read Visual Prolog 7.2 Upgrade Notes.

If you have problems with upgrading your projects and need additional information, you are welcome to ask questions in Visual Prolog Discussion Forum. By default, the installation of Visual Prolog 7.3 will not replace any previously installed versions. It is possible to work with several versions on a single computer.
 * The Commercial Edition will by default be installed in C:\Program Files\Visual Prolog 7.3.
 * The Personal Edition will by default be installed to C:\Program Files\Visual Prolog 7.3PE.

Visual Prolog 7.3 projects are backward-compatible with Visual Prolog 7.2 projects. If you are going to use different versions of Visual Prolog installed at one computer, avoid opening projects by double-clicking on prj6 files. Some changes might require automatic updates in Visual Prolog 7.2 projects. Therefore, it is recommended to make the project file (PRJ6) writable before the first build. Also, it is recommended to make copies for all project files first.

When your open a project in the Visual Prolog 7.3 IDE, it will automatically perform necessary updates of the project file. After this, it is recommended that you rebuild the entire project with the help of the Build | Rebuild All command and answer "Yes to All" to the messages suggesting adding or removing packages / modules.

Manual updates
This section describes things that may need manual updates.

apicall
Predicates with apicall calling convention should not longer have resolve xxxx externally (but it is still legal to resolve such predicates from a DLL, i.e. they can have resolve xxxx externally from dll_name). The resolves that gives a compilation error should simply be deleted. Also, such predicates cannot anymore have clauses (therefore, the declared apicall calling convention should be changed).

Ambiguous null
Autogenerated COM code from older versions may give ambuguity errors for constructions like: uncheckedConvert(iXxxx_native, null) the ambiguity will disappear by gualifying null with ::

uncheckedConvert(iXxxx_native, ::null)