Re: [Guide] Compiling Ahk_h's source step by step
Posted: 27 Jul 2019, 15:34
What do you mean by ALL compilation options and what error do you get otherwise?
Let's help each other out
https://www.autohotkey.com/boards/
https://www.autohotkey.com/boards/viewtopic.php?f=65&t=62308
Hi!
Hi, yeah, I make AutoHotkey is the startup project and tried to compile the way you said (AutoHotkey|MT_Release|x64 only) and also just choosing Release, but even so in the final file it doesn't get the right size and it doesn't work. But if I select all the options, as I mentioned above, the final file gets 2,448kb
Yes, I'm running the CleanUpAndPack.exe, but for me it only works when the final file gets 2.448kb, and it doesn't if I don't select ALL. I've tried several combinations and the final file is never the correct size.
973709968f5698c1f95f95d28e94e897be1780ec
Nov 29, 2019
Fix bug for compressed scripts
Updated the guide! please tell me if you see any errors. Thank you!guest3456 wrote: ↑09 Dec 2019, 00:21i just followed the steps for this right now, with the latest AHK_H commit on master v1 branch:973709968f5698c1f95f95d28e94e897be1780ec
Nov 29, 2019
Fix bug for compressed scripts
here are my notes after following the first post in this thread:
1.1) i never got the Retarget Projects popup when opening the .sln file.. i guess maybe the latest AHK_H doesn't need it anymore?
but, that means that i dont have an SDK number to save for Step 1.3
1.3) in fact, i dont have any of these folders: 'C:\Program Files (x86)\Windows Kits\10\Include\HERE GOES THE VERSION\shared';
i dont have ..\Windows Kits\10\Include\... i only have '..\Windows Kits\10\ExtensionSDKs\...'
and i know i checked the correct boxes to install in step 1
1.4) $(LibraryPath); was already added so i didnt have to touch these
1.5) the OP only shows 4 configs to build: Release, ReleaseDll, ReleaseDllMini, SelfContained. BUT, really you also have to build the corresponding (mbcs) for all of them too (which is the config for Win32a ansi), and then you ALSO need to build all of the MT_ variants too. otherwise, in the next step 1.6, CleanUpAndPack will complain when it can't find the ansi or MT files. (actually, i think you can skip x64 configs for mbcs, because i believe the x64 builds only support unicode)
everything builds successfully for me despite not adding the SDK lib dirs above.
2.1) i'm seeing 8 references for g_default_pwd now, not 6
2.5) similarly, its now the 8th (last) reference (not 6th) where you change the pw and can change the index offsets
thanks @kyuuuri for the guide
Ahk2Exe:
important: when you want to compile your ahk script, you must Run the Ahk2exe script with the same AHK executable type as you plan on compiling with the base file. for example, if you run Ahk2exe with Ansi version of AHK, but then you choose win32w (unicode) for your base file, the resulting .exe won't open with error "the variable name contains an invalid char". its likely because it needs the pw as a unicode string not ansi. and vice versa
In your updated guide I cannot fully see the names for solution config tab(on step "1.3" for the second image in "Check the following boxes"), It would be nice if you had a plain text to reference for all the requirements and not just an image(Names are cut off at the end in the image.) Please update, thank you!
Here is the screenshot of the options I have, I can't find the duplicates unless I'm missing something, There are the same names under "lib_pcre" but not under AutoHotKey. Also, after I change the g_default password do I need to rebuild? and run cleanupAndPack.exe? The tutorial didn't mention this and I'm slightly confused as to what I do after I change the password.
Code: Select all
TCHAR *g_default_pwd[] = { &g_default_pwd0, &g_default_pwd1, &g_default_pwd2, &g_default_pwd3, &g_default_pwd4, &g_default_pwd5, &g_default_pwd6, &g_default_pwd7, &g_default_pwd8, &g_default_pwd9, &g_default_pwd10, &g_default_pwd11, &g_default_pwd12, &g_default_pwd13, &g_default_pwd14, &g_default_pwd15, &g_default_pwd16, &g_default_pwd17, &g_default_pwd18, &g_default_pwd19, 0, 0 };
Code: Select all
extern TCHAR g_default_pwd0;
extern TCHAR g_default_pwd1;
extern TCHAR g_default_pwd2;
extern TCHAR g_default_pwd3;
extern TCHAR g_default_pwd4;
extern TCHAR g_default_pwd5;
extern TCHAR g_default_pwd6;
extern TCHAR g_default_pwd7;
extern TCHAR g_default_pwd8;
extern TCHAR g_default_pwd9;
extern TCHAR g_default_pwd10;
extern TCHAR g_default_pwd11;
extern TCHAR g_default_pwd12;
extern TCHAR g_default_pwd13;
extern TCHAR g_default_pwd14;
extern TCHAR g_default_pwd15;
extern TCHAR g_default_pwd16;
extern TCHAR g_default_pwd17;
extern TCHAR g_default_pwd18;
extern TCHAR g_default_pwd19;
extern TCHAR *g_default_pwd[];
Code: Select all
for (int i = 0; i < 20; i++)
Code: Select all
pw[i] = pwd == g_default_pwd ? (TCHAR) _T("7\0t\03\0s\09\0e\0q\0F\0W\0z\0S\07\0F\0d\09\07\0V\0s\0W\0H\0")[i*2] : (TCHAR)*pwd[i];
Hi, is not required. Probably there was a typo somewhere.uhwok3n wrote: ↑23 May 2020, 05:05Okay, I did that. I'm Having an issue. I compiled my source and changed the password:
1st Reference(g_default_pwd) :2nd Reference(g_default_pwd):Code: Select all
TCHAR *g_default_pwd[] = { &g_default_pwd0, &g_default_pwd1, &g_default_pwd2, &g_default_pwd3, &g_default_pwd4, &g_default_pwd5, &g_default_pwd6, &g_default_pwd7, &g_default_pwd8, &g_default_pwd9, &g_default_pwd10, &g_default_pwd11, &g_default_pwd12, &g_default_pwd13, &g_default_pwd14, &g_default_pwd15, &g_default_pwd16, &g_default_pwd17, &g_default_pwd18, &g_default_pwd19, 0, 0 };
3rd Reference(g_default_pwd):Code: Select all
extern TCHAR g_default_pwd0; extern TCHAR g_default_pwd1; extern TCHAR g_default_pwd2; extern TCHAR g_default_pwd3; extern TCHAR g_default_pwd4; extern TCHAR g_default_pwd5; extern TCHAR g_default_pwd6; extern TCHAR g_default_pwd7; extern TCHAR g_default_pwd8; extern TCHAR g_default_pwd9; extern TCHAR g_default_pwd10; extern TCHAR g_default_pwd11; extern TCHAR g_default_pwd12; extern TCHAR g_default_pwd13; extern TCHAR g_default_pwd14; extern TCHAR g_default_pwd15; extern TCHAR g_default_pwd16; extern TCHAR g_default_pwd17; extern TCHAR g_default_pwd18; extern TCHAR g_default_pwd19; extern TCHAR *g_default_pwd[];
8th Reference:Code: Select all
for (int i = 0; i < 20; i++)
1) I made sure "Spectre Mitigation" is disabled on AutoHotkey project -> properties -> C/C++ -> Spectre Mitigation -> Disabled.Code: Select all
pw[i] = pwd == g_default_pwd ? (TCHAR) _T("7\0t\03\0s\09\0e\0q\0F\0W\0z\0S\07\0F\0d\09\07\0V\0s\0W\0H\0")[i*2] : (TCHAR)*pwd[i];
2) I batch build with the recommended options posted in the above photo (but without any mbcs x64)
3) Then I run "CleanUpAndPack.exe"
4) I place all the compiled folders from "ahkdll-master\bin" into the "AutoHotKey" (AutoHotKey_L) directory.
5) I copy "AutoHotkey.exe" file from "AutoHotkey\x64w" and rename it to "Ahk2Exe.exe" and place it in "AutoHotkey\Compiler".
6) I try compiling my program with the password "7t3s9eqFWzS7Fd97VsWH" and I get this error:
error_compile.png
my AHK folder looks like this:
primary_folder_ahk.png
My Compiler folder looks like this:
Lib_folder_ahk.png
I'm so confused as to what I am doing incorrectly. Can you please help? Am I placing the files in the incorrect directory? Why is my password not functioning?
EDIT: I recompiled everything with a password using only letters and it works now! Thank you for the responses. Is it required that the password can be only be letters? Is there a way to add numbers?