it also failed
zzz@zzz MINGW64 /e/code/me/test-nim
$ ls libcry*
libcrypto-1_1-x64.dll*
zzz@zzz MINGW64 /e/code/me/test-nim
$ nim c -d:release -d:ssl --clibdir:/e/scoop/global/apps/nim/current/bin ./imgur.nim Hint: used config file 'E:\scoop\global\apps\nim\current\config\nim.cfg' [Conf]
Hint: used config file 'E:\scoop\global\apps\nim\current\config\config.nims' [Conf]
............................................................................................................................................................
Hint: [Link]
Hint: mm: orc; threads: on; opt: speed; options: -d:release
75953 lines; 1.087s; 135.027MiB peakmem; proj: E:\code\me\test-nim\imgur.nim; out: E:\code\me\test-nim\imgur.exe [SuccessX]
zzz@zzz MINGW64 /e/code/me/test-nim
$ ./imgur.exe
could not load: (libssl-1_1-x64|ssleay64|libssl64).dll
That message means you're dynamically loading the library instead of statically or dynamically linking to it.
I'm not familiar with Windows, but in Linux that means you have to put the shared library in the same directory as the executable or in the directory specified by an specific environment variable; dynamically loading is unaffected by -L.
In the end, it's still failed, okay, I give up ;-)
╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ ls *.lib Directory: E:\code\me\test-nim Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2023/3/14 10:42 37865790 libcrypto_static.lib -a--- 2023/3/14 10:42 5767070 libssl_static.lib ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ rm .\imgur.exe ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ rm .\imgur.pdb ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ ls *.lib Directory: E:\code\me\test-nim Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2023/3/14 10:42 37865790 libcrypto_static.lib -a--- 2023/3/14 10:42 5767070 libssl_static.lib ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ nim c -d:release -d:ssl -d:useOpenssl3 --cc:clang --clang.exe:"zigcc.cmd" --clang.linkerexe:"zigcc.cmd" --passC:"-target x86_64-windows-msvc" --passL:"-target x86_64-windows-msvc" --dynlibOverride:ssl --dynlibOverride:crypto --passL:-static --passL:-L. --passL:libcrypto_static.lib --passL:libssl_static.lib .\imgur.nim Hint: used config file 'E:\scoop\global\apps\nim\current\config\nim.cfg' [Conf] Hint: used config file 'E:\scoop\global\apps\nim\current\config\config.nims' [Conf] ............................................................................................................................................................ Hint: [Link] E:\code\me\test-nim# zig cc -o E:\code\me\test-nim\imgur.exe C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@sstd@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@sstd@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@sstd@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@sstd@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@sstd@sprivate@swin_setenv.nim.c.o C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@spure@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@spure@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@m..@s..@s..@sscoop@sglobal@sapps@snim@scurrent@slib@[email protected] C:\Users\zzz\nimcache\imgur_r\@mimgur.nim.c.o -target x86_64-windows-msvc -static -L. libcrypto_static.lib libssl_static.lib Hint: mm: orc; threads: on; opt: speed; options: -d:release 76002 lines; 1.251s; 134.977MiB peakmem; proj: E:\code\me\test-nim\imgur.nim; out: E:\code\me\test-nim\imgur.exe [SuccessX] ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ ls .\imgur.* Directory: E:\code\me\test-nim Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 2023/12/31 19:30 1312768 imgur.exe -a--- 2023/12/30 17:35 899 imgur.nim -a--- 2023/12/31 19:30 7647232 imgur.pdb ╭╴🪟 $psh code\me\test-nim via 👑 v2.0.2 ╰─❯ .\imgur.exe could not load: (libssl-1_1-x64|ssleay64|libssl64).dll
I give up the static link. Now use Enigma Virtual Box to pack EXE and DLLS into a single file
Enigma Virtual Box embeds a special loader into the main application module which runs before the main code of the application. The loader intercepts system calls to the disk for file read/write, and if the target file is virtualized, the Enigma Virtual Box will emulate the file in memory and return the required result.
Just keep in mind that you're compromising your system security using this tool.