On Wednesday, 19 April 2023 at 14:42:44 UTC, bachmeier wrote:
[...]
> My understanding (from my occasional use of Windows) is that DMD installs the Community Edition of Visual Studio. That should solve your original issue, and you shouldn't need to mess with sppn.exe.
Well it took a little while, but I can confirm that if you have a D function like:
extern(C) void DCallee() {
import core.stdc.stdio : printf;
printf("Entered DCallee.\n");
printf("Exiting DCallee.\n");
}
called from a C function like:
// C Master calling D (under -betterC restrictions).
#include <stdio.h>
extern void DCallee();
int main()
{
printf("MastC Entered.\n");
DCallee();
printf("MastC Exiting.\n");
return 0;
}
Where the compilation is run from the batch file:
Rem Compile, link and run batch file.
IF EXIST .\DCallee.exe del .\DCallee.exe
IF EXIST .\DCallee.map del .\DCallee.map
IF EXIST .\DCallee.obj del .\DCallee.obj
IF EXIST .\MastC.exe del .\MastC.exe
IF EXIST .\MastC.map del .\MastC.map
IF EXIST .\MastC.obj del .\MastC.obj
dmd -m32omf -betterC -c DCallee.d
dmc MastC.c DCallee.obj
MastC.exe
Rem Exited compile, link and run batch file.
Then everything runs properly.
As an aside, it was a surprise to me to discover that the order of the file names in the
dmc line was significant, bearing in mind MastC.c contains a 'main' function, and DCallee.d does not.
As a further aside, I do recall the installer loading Visual Studio, but it didn't seem to help.