dbghelp detached from wine into standalone windows dll...
Alexandre Julliard
julliard at winehq.org
Thu Jun 6 01:59:28 CDT 2019
Tarmo Pikaro <tapika at yahoo.com> writes:
> On Wednesday, June 5, 2019, 10:44:25 AM GMT+3, Alexandre Julliard <julliard at winehq.org> wrote:
>
> Tarmo Pikaro <tapika at yahoo.com> writes:
>
>>> Other stuff like missing WideCharToMultiByte can be
>>> addressed by providing the missing functions in your own separate object
>>> file, without changing the source.
>>
>> I've scanned quite many unicode libraries and concluded of bringing up cutf library alive - that is basically a replacement for
>> WideCharToMultiByte & windows api - uses less call arguments, but can achieve stuff.
>>
>> My point is that you can write a simple WideCharToMultiByte wrapper on
>> top of your cutf library, and then you don't need to patch dbghelp at
>> all, only to link it against your wrapper.
>
> I think wrapping can go in either direction, but you must admit that writing:
>
> len = utf8zestimate(searchPath);
>
> is shorter than:
>
> len = MultiByteToWideChar(CP_ACP, 0, searchPath, -1, NULL, 0);
>
> by 6-1 = 5 parameters,
It's also completely non-standard. In Wine, we use Windows APIs wherever
possible.
> Yes, but I would like to start from basics - enable functionality initially, and worry about which dll
> exports and what later on. I think we could have even our own (application) specific "standard" API.
>
> Btw - I have tried to load from wine / LoadLibrary linux shared object, but could not. Tried something like this:
>
> void stackCallbacker()
> {
> printf("%s", g3::internal::stackdump().c_str());
> }
>
> typedef void(*func)(void);
> typedef void(*fcallFunc)(func);
>
> int main(int argc, char **argv)
> {
> //HMODULE h = LoadLibraryA("dll.dll");
> const char* dllName = "dll";
> //const char* dllName = "/mnt/c/Prototyping/dbghelp2_dev2/bin/Release_x86/dll.so";
> HMODULE h = LoadLibraryA(dllName);
> if (h == 0)
> {
> printf("Failed to load '%s'\n", dllName);
> return 0;
> }
>
> fcallFunc fc;
> *((FARPROC*)&fc) = GetProcAddress(h, "DoTestCall");
>
> printf("Calling dll -> DoTestCall ...\n");
> fc(stackCallbacker);
> printf("call ok.");
>
> But wine refuses to load dll.so by relative or absolute path. Does wine supports this ?
It works if the .so file was built as a Wine library, with an embedded
PE header. It's not possible to load a plain .so lib, since there's no
way to return a valid HMODULE for it.
--
Alexandre Julliard
julliard at winehq.org
More information about the wine-devel
mailing list