I've recently switched to 64-bit compiler on Windows 10, but there are apps that still refuse to start. No error messages are given when it tries to load 32-bit dll for example. At least when dll is completely missing, it seems that when try to start the app i get error message stating which dll file is missing. But problem is when there is a dll that is same name when it's 32 or 64-bit.
The problem came with BASS audio library, but i did own modifications to its header and renamed bass.dll to bass64.dll from x64 folder.
{$IFDEF MSWINDOWS}
{$IFDEF CPU64}
bassdll = 'bass64.dll';
{$ELSE}
bassdll = 'bass.dll';
{$ENDIF}
{$ENDIF}
http://www.freepascal.org/docs-html/3.0.0/prog/progap7.html <- was useful doc for finding that.
With small projects like mine, knowing i was changing from 32 to 64 it was obvious i should look into dll versions, but what if it was a bigger project and 10 dll files? Having as much as
function BASS_SetConfig(option, value: DWORD): BOOL; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll;
Declared somewhere is enough to make whole executable not start at all, no errors, no warnings.
I'm using the latest Lazarus+fpc package 1.6.2 that's with fpc 3.0.0.