Yet again answering my own question. My brain overflow since we dont have any good guides related to it.
I added : PublicDelayLoadDlls to my main build.cs file. But this function doesnt get any of path so I just regularly put dll name inside of this function. Steps that I have
Dynamically load library implementation in plugin .cpp with GetDllHandles
Then inserted PublicDelayLoadDlls to build.cs
I really wonder execution order of this plugin. I hope this answer lets you somewhere, if I learn more I will share here.
Edit
I solved out why worked after I add PublicDelayLoadDlls, UBT tries to load all dll’s required by headers and includes required, when you use GetDllHandles actually you are loading dll. PublicDelayLoadDlls lets you prioritize cpp startup module operations before loading dll.