Thanks, it works now.
I was missing the CreateThread in DLL Main
```
case DLL_PROCESS_ATTACH:
// Initialize once for each new process.
// Return FALSE to fail DLL load.
{
MyThreadParams* lpThrdParam = (MyThreadParams*)malloc(sizeof(MyThreadParams
));
lpThrdParam->hinstDLL = _hinstDLL;
lpThrdParam->fdwReason = _fdwReason;
lpThrdParam->lpReserved = _lpReserved;
HANDLE hThread = CreateThread(NULL, 0, MyThreadFunction, lpThrdParam, 0,
NULL);
// CreateThread() because otherwise DllMain() is highly likely to deadlock.
} break;
```
Plus yeah testing with rundll32 was not adequate. I created a process that
attach the DLL.
There is still one point I am missing is why DllMain deadlock if I don't
run my function in a new thread ? Is it because I am not using goroutines ?
Le dimanche 10 novembre 2024 à 21:42:44 UTC+1, Jason E. Aten a écrit :
> I would suggest divide and conquer next. This is a classic approach to
> debuggging.
>
> First get something working in C, solely on Windows.
>
> Can you build a pure C host and pure C DLL that loads and shows your
> window?
>
> I note that I never had much luck cross-compiling to windows, so I would
> recommend, initially, building and running your C host and C DLL on windows
> exclusively. This will also cut down on the number of moving parts.
>
> Also, I would not use rundll32.exe to test, since it is 32 bit only and
> its docs say that it can only be used with DLLs that were specifically
> built for it: "Rundll32 can only call functions from a DLL explicitly
> written to be called by Rundll32."
> Rather build your own host/main C program that imports your DLL.
>
> The I would incrementally move towards your end goal. If you haven't
> realized the issue yet, then move to cross compilation without Go. If that
> works, then add in the Go code.
>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion visit
https://groups.google.com/d/msgid/golang-nuts/34c33139-984c-4f5e-8f7d-ef07f28c367fn%40googlegroups.com.