- How to proceed?
- Enabling the 64-bit mode
- Mode for managing the compilation errors
- Compilation errors specific to the 64-bit mode
- Deploying a site compatible with the 64-bit mode
- Various limits
- Registry and system files
The recent computers (servers and desktop computers) are now equipped with "64-bit" operating systems.
The main difference between a "32-bit" system and a "64-bit" system is as follows: in "64 bits", the applications and the system are no longer limited regarding the memory allocation.
Indeed, in "32 bits", the operating system is limited to 4 GB while in "64 bits", there is nearly no limit (the limit is set to 18 billions GB).
Operating mode of 32-bit/64-bit sites: A site compiled in 64 bits can be used with a 32-bit server or with a 64-bit server. A 64-bit server can only display 64-bit sites. If the site was not generated in 64 bits, an error will occur when the site is started.
Enabling the 64-bit mode
To switch a WEBDEV site from 32 bits to 64 bits:
- Open the 32-bit WEBDEV project in the editor.
- Display the description of the project configuration corresponding to the site. One of the following methods can be used:
- select "Description" in the popup menu of the project configuration (in the "Project explorer" pane).
- on the "Project" pane, in the "Project configuration" group, click "Current configuration".
- In the "Compatibility" tab, check (if necessary) "Enable the compilation errors for the 64-bit compatibility".
Remark: From version 16, the sites are created with the 64-bit option enabled by default.
Mode for managing the compilation errors
For the sites, components, libraries and Webservices, the 64-bit errors are always enabled by default.
Compilation errors specific to the 64-bit mode
If the "32-bit" application was using Windows APIs or external DLLs, the switch to "64-bit" mode may generate compilation errors. These compilation errors are specific to the "64-bit" mode.
The most common error consists in using an "integer" variable to store a memory address.
Indeed, the memory addresses are stored on 8 bytes in 64-bit mode while they are stored on 4 bytes in 32-bit mode.
In this case, if a "standard" integer is used, the application may access a truncated memory address, therefore an invalid address.
To avoid this problem, you must use the System Integer
type of WLanguage: this type is uses an 8-byte integer in 64 bits and a 4-byte integer in 32 bits!
- Don't forget to check that the APIs used exist in "64-bit" mode. And make sure that the DLL does not have a different name in "64-bit" mode and that its operating mode is identical.
If differences are noticed, you have the ability to use In64bitMode to call the API corresponding to the current system.
- In 64 bits, if a too large value is assigned to a variable whose type is Integer on 1, 2, 4 or 8 bytes, the value of the variable will not be the same as in 32 bits.
Deploying a site compatible with the 64-bit mode
The method for deploying a site compatible with the 64-bit mode is the same as the method for deploying a 32-bit site: on the "Project" pane, in the "Generation" group, expand "Deploy site". See Deploying a WEBDEV site
for more details.
Remark: A site compiled in 64 bits can be used with a 32-bit server or with a 64-bit server. A 64-bit server can only display 64-bit sites. If the site was not compiled with the "64 bits" option, an error will occur when the site is started.
- Hasp is not available in 64 bits.
- NetXXX functions: Only the client part is available in 64 bits, and it is compatible with a 32-bit server. The server part (NetStartServer and NetEndServer) is not available.
- 64-bit external languages: only C and C++ are available.
Registry and system files
- Registry: On a 64-bit system, the 32-bit applications write into the registry from the following branch: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node
- Access to the system files: On a 64-bit system, the 32-bit applications use different system directories.
For example, an access to the "\Windows\system32\" directory will be performed in this folder from a 64-bit executable.
On the contrary, from a 32-bit executable, the access will be performed in the "\Windows\SysWOW64" folder.
Click [Add] to post a comment