To turn on wine debugging, use the WINEDEBUG
environment variable, e.g.,
WINEDEBUG=+timestamp,+tid,+loaddll
.
The forked process fails to load libraries loaded via LoadLibrary
if the load
happens after the entry point (error code: 87). To resolve this issue, one needs
to load any external libraries before the fork happens.
An early DLL load can be achieved by adding the DLL name into the Import Directory
in the PE file. Such an entry can be added manually in any PE editor.
Alternatively, one can generate a .lib
file from the DLL exports and link them
together with the harness to create an entry in the Import Directory
. Use
dumpbin /exports <filename>.dll
to extract the exports and paste the exported
function names into a .def
file. Use lib /def:<deffile> /OUT:<libfile>
to
generate a .lib
and add the library to the linker options. Once the usage of
an export is detected (__declspec(dllimport)
), the linker adds the early DLL
load.