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
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