Artenuvielle / GW2-SCT

A scrolling combat text addon for GW2 using ArcDPS API
MIT License
62 stars 10 forks source link

OpenSSL dependency? #37

Closed ideka closed 3 years ago

ideka commented 3 years ago

I don't know why but the latest RC build requires OpenSSL libraries libcrypto-1_1-x64.dll and libssl-1_1-x64.dll, and if they are not found in your system, ArcDPS reports failure to load SCT with error code 126.

It seems to happen both on dx9 and dx11. The library works fine as far as I've tested if the dlls are provided.

Is this a real dependency, or maybe a build mishap?

Artenuvielle commented 3 years ago

The skill icons are requested from the rendering API which is only available via HTTPS. In the past I used a statically linked CURL client under the hood, but I recently switched to httplib. Both require OpenSSL libraries, but the later needs a newer version. When I updated my build libraries it seems I used a shared library build of OpenSSL. Seems like I have to create a new statically linked OpenSSL binary and link that into SCT.

Artenuvielle commented 3 years ago

I updated release 2.0 RC2. Feel free to download the dll again and see if this help.

ideka commented 3 years ago

The skill icons are requested from the rendering API which is only available via HTTPS. In the past I used a statically linked CURL client under the hood, but I recently switched to httplib. Both require OpenSSL libraries, but the later needs a newer version. When I updated my build libraries it seems I used a shared library build of OpenSSL. Seems like I have to create a new statically linked OpenSSL binary and link that into SCT.

Ah, that would explain it.

I updated release 2.0 RC2. Feel free to download the dll again and see if this help.

Well this appears to be a debug build now, complete with a console. 😛 And it seems to still require the dlls, too.

Artenuvielle commented 3 years ago

I changed it now to a release build ;)

I could however not find any clue that it still depends on libssl or libcrypto to be dynamically loadable anymore... According to dumpbin:

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community>VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64\dumpbin.exe /dependents d3d9_arcdps_sct.dll
Microsoft (R) COFF/PE Dumper Version 14.29.30136.0
Copyright (C) Microsoft Corporation.  All rights reserved.

Dump of file d3d9_arcdps_sct.dll

File Type: DLL

  Image has the following dependencies:

    KERNEL32.dll
    USER32.dll
    MSVCP140.dll
    WS2_32.dll
    CRYPT32.dll
    VCRUNTIME140.dll
    VCRUNTIME140_1.dll
    api-ms-win-crt-runtime-l1-1-0.dll
    api-ms-win-crt-convert-l1-1-0.dll
    api-ms-win-crt-stdio-l1-1-0.dll
    api-ms-win-crt-filesystem-l1-1-0.dll
    api-ms-win-crt-heap-l1-1-0.dll
    api-ms-win-crt-math-l1-1-0.dll
    api-ms-win-crt-string-l1-1-0.dll
    api-ms-win-crt-multibyte-l1-1-0.dll
    api-ms-win-crt-locale-l1-1-0.dll
    api-ms-win-crt-utility-l1-1-0.dll
    api-ms-win-crt-time-l1-1-0.dll
    api-ms-win-crt-environment-l1-1-0.dll
    bcrypt.dll
    ADVAPI32.dll

  Summary

       11000 .data
       19000 .pdata
       B9000 .rdata
        7000 .reloc
        1000 .rsrc
      271000 .text
ideka commented 3 years ago

Well I don't know how to further debug this and I don't know why it wouldn't appear on that list, but the dll is still not loading for me without both libcrypto and libssl 😕

Artenuvielle commented 3 years ago

Have you made sure, that you redownloaded the newest release version and removed any d3d9_arcdps_sct.dll from your game_dir/bin directory before copying the new one there? The file size of the dll should be ~3.4 MB.

ideka commented 3 years ago

Oh, good call. I got mixed up because of dx11 vs dx9 stuff, the new build does not require the extra dlls anymore.