| 1 | Applications can use dynamic libraries; |
| 2 | just include them in the [UpdateVersions#multifile multi-file application]. |
| 3 | |
| 4 | A problem arises if you support multiple platforms, |
| 5 | and the libraries for the different platforms have the same name. |
| 6 | In BOINC, if files are called the same, they must be the same file. |
| 7 | |
| 8 | For example, suppose you support both Win32 and Win64, |
| 9 | and you use a DLL "vcomp90.dll" that has 32- and 64-bit versions. |
| 10 | If you install the 32-bit app first, |
| 11 | it will end up trying to link the 64-bit library, and will crash. |
| 12 | |
| 13 | The solution is to give the libraries different physical names |
| 14 | but the same logical name. |
| 15 | Do this as follows: |
| 16 | |
| 17 | * In the 32-bit app, call the file '''vcomp90.dll=vcomp90_v1.0_32bit.dll'''. This will be copied as "vcomp90_v1.0_32bit.dll" to the download directory, and used as "vcomp90.dll" on the client. |
| 18 | |
| 19 | * Then, add another file called '''vcomp90.dll=vcomp90_v1.0_32bit.dll.file_ref_info''' containing just: |
| 20 | {{{ |
| 21 | <copy_file/> |
| 22 | }}} |
| 23 | This will ensure the file is *copied* to '''vcomp90.dll''', instead of linked, |
| 24 | since Windows obviously won't understand BOINC soft links when trying to find |
| 25 | the DLL. |