Thread overview | |||||||
---|---|---|---|---|---|---|---|
|
December 02, 2020 How to build dll? | ||||
---|---|---|---|---|
| ||||
D code: >import core.sys.windows.dll; > > mixin SimpleDllMain; > >version(Windows) extern(C) export >int foo() { return 42; } compiled with: > dmd -ofmydll.dll -shared -m32 dll.d called from: >typedef int (__cdecl *MYPROC)(void); > >int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, > PWSTR szCmdLine, int CmdShow) >{ > HINSTANCE hinstLib; > MYPROC ProcAdd; > BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; > > // Get a handle to the DLL module. > > hinstLib = LoadLibrary(TEXT("mydll.dll")); but hinstLib is NULL and GetLastError() = 193: > ERROR_BAD_EXE_FORMAT 193 (0xC1) > %1 is not a valid Win32 application. What am I missing? |
December 02, 2020 Re: How to build dll? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack | On Wednesday, 2 December 2020 at 19:42:37 UTC, Jack wrote: > D code: > >>import core.sys.windows.dll; >> >> mixin SimpleDllMain; >> >>version(Windows) extern(C) export >>int foo() { return 42; } > > compiled with: >> dmd -ofmydll.dll -shared -m32 dll.d > > called from: > >>typedef int (__cdecl *MYPROC)(void); >> >>int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, >> PWSTR szCmdLine, int CmdShow) >>{ >> HINSTANCE hinstLib; >> MYPROC ProcAdd; >> BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; >> >> // Get a handle to the DLL module. >> >> hinstLib = LoadLibrary(TEXT("mydll.dll")); > > > but hinstLib is NULL and GetLastError() = 193: > >> ERROR_BAD_EXE_FORMAT 193 (0xC1) >> %1 is not a valid Win32 application. > > What am I missing? for same reason, the dll build with ldc2 works fine, compiled with: >ldc2 -shared dll.d -ofmydll.dll what am I missing? |
December 02, 2020 Re: How to build dll? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack | On Wednesday, 2 December 2020 at 20:08:29 UTC, Jack wrote:
> On Wednesday, 2 December 2020 at 19:42:37 UTC, Jack wrote:
>> D code:
>>
>>>[...]
>>
>> compiled with:
>>> [...]
>>
>> called from:
>>
>>> [...]
>>
>>
>> but hinstLib is NULL and GetLastError() = 193:
>>
>>> [...]
>>
>> What am I missing?
>
> for same reason, the dll build with ldc2 works fine, compiled with:
>
>>ldc2 -shared dll.d -ofmydll.dll
>
> what am I missing?
Just out of curiosity, are you sure that you compile both your c and d codes for the same arc?
|
December 03, 2020 Re: How to build dll? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Jack | On Wednesday, 2 December 2020 at 19:42:37 UTC, Jack wrote: > D code: > >>import core.sys.windows.dll; >> >> mixin SimpleDllMain; >> >>version(Windows) extern(C) export >>int foo() { return 42; } > > compiled with: >> dmd -ofmydll.dll -shared -m32 dll.d > > called from: > >>typedef int (__cdecl *MYPROC)(void); >> >>int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, >> PWSTR szCmdLine, int CmdShow) >>{ >> HINSTANCE hinstLib; >> MYPROC ProcAdd; >> BOOL fFreeResult, fRunTimeLinkSuccess = FALSE; >> >> // Get a handle to the DLL module. >> >> hinstLib = LoadLibrary(TEXT("mydll.dll")); > > > but hinstLib is NULL and GetLastError() = 193: > >> ERROR_BAD_EXE_FORMAT 193 (0xC1) >> %1 is not a valid Win32 application. > > What am I missing? May be this will help: https://github.com/vitalfadeev/dlang-dll |
Copyright © 1999-2021 by the D Language Foundation