Jump to page: 1 2
Thread overview
ImportC "no include path set"
Feb 06, 2023
Elfstone
Feb 06, 2023
Ali Çehreli
Feb 06, 2023
bachmeier
Feb 07, 2023
Elfstone
Feb 07, 2023
ryuukk_
Feb 07, 2023
Elfstone
Feb 08, 2023
ryuukk_
Feb 08, 2023
Elfstone
Feb 08, 2023
bachmeier
Feb 09, 2023
Elfstone
Feb 09, 2023
bachmeier
Feb 09, 2023
Guillaume Piolat
Jun 21, 2024
mw
Jun 22, 2024
bachmeier
Jun 22, 2024
Lance Bachmeier
February 06, 2023

I'm trying out ImportC, but I can't get even the "Quick Example" running.

> dmd -v .\source\foobar.c
predefs   DigitalMars LittleEndian D_Version2 all Windows Win32 CRuntime_Microsoft CppRuntime_Microsoft D_InlineAsm D_InlineAsm_X86 X86 assert D_PreConditions D_PostConditions D_Invariants D_ModuleInfo D_Exceptions D_TypeInfo D_HardFloat
binary    C:\D\dmd2\windows\bin\dmd.exe
version   v2.102.0-dirty
config    C:\D\dmd2\windows\bin\sc.ini
DFLAGS    -IC:\D\dmd2\windows\bin\..\..\src\phobos -IC:\D\dmd2\windows\bin\..\..\src\druntime\import
include   C:\D\dmd2\windows\bin\..\..\src\druntime\import\importc.h
C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\bin\HostX64\x86\cl.exe /P /Zc:preprocessor /PD /nologo .\source\foobar.c /FIC:\D\dmd2\windows\bin\..\..\src\druntime\import\importc.h /Fifoobar.i
.\source\foobar.c(1): fatal error C1034: stdio.h: no include path set
Error: C preprocess command C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.34.31933\bin\HostX64\x86\cl.exe failed for file .\source\foobar.c, exit status 2

So how am I supposed to set the include path?

When ran on VS' Command Prompt it spits a link error instead.

foobar.obj : error LNK2019: unresolved external symbol __va_start referenced in function _fwprintf_l
foobar.exe : fatal error LNK1120: 1 unresolved externals
Error: linker exited with status 1120

What am I missing?

February 06, 2023
On 2/5/23 22:55, Elfstone wrote:

> So how am I supposed to set the include path?

I am not familiar with D in Windows but my first guess would be the -I compiler switch:

  dmd -I=/my/c/headers ...

Ali

February 06, 2023

On Monday, 6 February 2023 at 06:55:02 UTC, Elfstone wrote:

>

So how am I supposed to set the include path?

https://dlang.org/spec/importc.html#preprocessor

>

The -Ppreprocessorflag switch passes preprocessorflag to the preprocessor.

So if you normally use -I/foo, you'd add -P-I/foo.

February 07, 2023

On Monday, 6 February 2023 at 14:35:53 UTC, bachmeier wrote:

>

On Monday, 6 February 2023 at 06:55:02 UTC, Elfstone wrote:

>

So how am I supposed to set the include path?

https://dlang.org/spec/importc.html#preprocessor

>

The -Ppreprocessorflag switch passes preprocessorflag to the preprocessor.

So if you normally use -I/foo, you'd add -P-I/foo.

Thanks, it worked, but I still get the link error.
I wasn't expecting to configure include paths and link the right libc myself. The doc says the simple "dmd hello.c" should create "hello.exe". It must be a bug.

February 07, 2023

On Tuesday, 7 February 2023 at 06:25:59 UTC, Elfstone wrote:

>

On Monday, 6 February 2023 at 14:35:53 UTC, bachmeier wrote:

>

On Monday, 6 February 2023 at 06:55:02 UTC, Elfstone wrote:

>

So how am I supposed to set the include path?

https://dlang.org/spec/importc.html#preprocessor

>

The -Ppreprocessorflag switch passes preprocessorflag to the preprocessor.

So if you normally use -I/foo, you'd add -P-I/foo.

Thanks, it worked, but I still get the link error.
I wasn't expecting to configure include paths and link the right libc myself. The doc says the simple "dmd hello.c" should create "hello.exe". It must be a bug.

You need to run dmd from the developer command prompt on windows

I always found this requirement weird

From an UX point of view, what would the better experience be? Could DMD ship with the required files? I have 0 knowledge how the whole thing works so..

February 07, 2023

On Tuesday, 7 February 2023 at 13:10:44 UTC, ryuukk_ wrote:

>

On Tuesday, 7 February 2023 at 06:25:59 UTC, Elfstone wrote:

>

On Monday, 6 February 2023 at 14:35:53 UTC, bachmeier wrote:

>

[...]

Thanks, it worked, but I still get the link error.
I wasn't expecting to configure include paths and link the right libc myself. The doc says the simple "dmd hello.c" should create "hello.exe". It must be a bug.

You need to run dmd from the developer command prompt on windows

I always found this requirement weird

From an UX point of view, what would the better experience be? Could DMD ship with the required files? I have 0 knowledge how the whole thing works so..

That I tried, and I got link error(s) - see my first post. :(

February 08, 2023

On Tuesday, 7 February 2023 at 14:01:00 UTC, Elfstone wrote:

>

On Tuesday, 7 February 2023 at 13:10:44 UTC, ryuukk_ wrote:

>

On Tuesday, 7 February 2023 at 06:25:59 UTC, Elfstone wrote:

>

On Monday, 6 February 2023 at 14:35:53 UTC, bachmeier wrote:

>

[...]

Thanks, it worked, but I still get the link error.
I wasn't expecting to configure include paths and link the right libc myself. The doc says the simple "dmd hello.c" should create "hello.exe". It must be a bug.

You need to run dmd from the developer command prompt on windows

I always found this requirement weird

From an UX point of view, what would the better experience be? Could DMD ship with the required files? I have 0 knowledge how the whole thing works so..

That I tried, and I got link error(s) - see my first post. :(

Oh my bad, i misread your comment

Make sure your visual studio install is up to date, maybe you have one component missing?

https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation

If you installed/updated VS without reboot, maybe a reboot could do the trick?

February 08, 2023

On Wednesday, 8 February 2023 at 04:14:21 UTC, ryuukk_ wrote:

>

On Tuesday, 7 February 2023 at 14:01:00 UTC, Elfstone wrote:

>

On Tuesday, 7 February 2023 at 13:10:44 UTC, ryuukk_ wrote:

>

On Tuesday, 7 February 2023 at 06:25:59 UTC, Elfstone wrote:

>

On Monday, 6 February 2023 at 14:35:53 UTC, bachmeier wrote:

>

[...]

Thanks, it worked, but I still get the link error.
I wasn't expecting to configure include paths and link the right libc myself. The doc says the simple "dmd hello.c" should create "hello.exe". It must be a bug.

You need to run dmd from the developer command prompt on windows

I always found this requirement weird

From an UX point of view, what would the better experience be? Could DMD ship with the required files? I have 0 knowledge how the whole thing works so..

That I tried, and I got link error(s) - see my first post. :(

Oh my bad, i misread your comment

Make sure your visual studio install is up to date, maybe you have one component missing?

https://learn.microsoft.com/en-us/cpp/build/vscpp-step-0-installation

If you installed/updated VS without reboot, maybe a reboot could do the trick?

I believe all three versions (2017,2019,2022) of my VS are up to date, and I have working C/C++ projects on them.
But you encouraged me to give a few more tries, and I found out I had been using ..bin64/dmd.exe. Running ..bin/dmd.exe in VS Command Prompt turned out successful. Thx!

February 08, 2023

On Wednesday, 8 February 2023 at 06:49:06 UTC, Elfstone wrote:

>

I believe all three versions (2017,2019,2022) of my VS are up to date, and I have working C/C++ projects on them.
But you encouraged me to give a few more tries, and I found out I had been using ..bin64/dmd.exe. Running ..bin/dmd.exe in VS Command Prompt turned out successful. Thx!

Is this documented? I don't use Windows, so I may be missing something, but this looks like one of those "death by paper cut" things. It has the smell of a rough edge that needs fixing.

February 09, 2023

On Wednesday, 8 February 2023 at 14:08:47 UTC, bachmeier wrote:

>

On Wednesday, 8 February 2023 at 06:49:06 UTC, Elfstone wrote:

>

I believe all three versions (2017,2019,2022) of my VS are up to date, and I have working C/C++ projects on them.
But you encouraged me to give a few more tries, and I found out I had been using ..bin64/dmd.exe. Running ..bin/dmd.exe in VS Command Prompt turned out successful. Thx!

Is this documented? I don't use Windows, so I may be missing something, but this looks like one of those "death by paper cut" things. It has the smell of a rough edge that needs fixing.

I found nothing in the Language Reference. I had to figure out using VS Command Prompt and 32bit dmd on my own.

The option "-m32omf" did work, after I downloaded sppn.exe and added it to PATH. For some reason sppn.exe wasn't included in dmc-857.exe that came with DMD installation, but is found in dm857c.zip.

Maybe Walter doesn't care about Windows enough, but I thought it'd be a must to add basic tests (say, "dmd hello.c") to run on all the platforms before release.

« First   ‹ Prev
1 2