ImportC issue?

DLearner bmqazwsx123 at gmail.com
Wed Apr 19 17:34:40 UTC 2023


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.



More information about the Digitalmars-d-learn mailing list