ImportC in a Dub project

Carsten Schlote carsten.schlote at gmx.net
Fri Oct 28 18:43:21 UTC 2022


On Friday, 28 October 2022 at 18:31:25 UTC, Steven Schveighoffer 
wrote:

> Are you passing the c file to the compiler? Also, you must be 
> using dmd for ImportC currently.
>
> What is your build line?

```
$ cat dub.json
{
	"authors": [
		"Carsten Schlote"
	],
	"copyright": "Copyright © 2022, Carsten Schlote",
	"description": "A minimal D application.",
	"license": "proprietary",
	"name": "importc-app",
	"lflags": [ "-lzstd", "zstd_binding.o" ],
	"preBuildCommands": [ "gcc -g -O0 -c -o zstd_binding.o 
source/zstd_binding.c"]
```

```
$ dub build --compiler=dmd-beta -v
Using dub registry url 'https://code.dlang.org/'
Refreshing local packages (refresh existing: true)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/home/cschlote/.dub/packages/local-packages.json
Looking for local package map at 
/home2/cschlote/build/dlang/importc-tests/dubbed/.dub/packages/local-packages.json
Note: Failed to determine version of package importc-app at .. 
Assuming ~master.
Refreshing local packages (refresh existing: false)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/home/cschlote/.dub/packages/local-packages.json
Looking for local package map at 
/home2/cschlote/build/dlang/importc-tests/dubbed/.dub/packages/local-packages.json
Refreshing local packages (refresh existing: false)...
Looking for local package map at 
/var/lib/dub/packages/local-packages.json
Looking for local package map at 
/home/cschlote/.dub/packages/local-packages.json
Looking for local package map at 
/home2/cschlote/build/dlang/importc-tests/dubbed/.dub/packages/local-packages.json
Generating using build
Configuring dependent importc-app, deps:
Performing "debug" build using dmd-beta for x86_64.
Target 
'/home2/cschlote/build/dlang/importc-tests/dubbed/.dub/build/application-debug-linux.posix-x86_64-dmd_v2.101.0-beta.1-36-ga2865d74fb-9DB8925B9A720899BDD003C68BC85F85/importc-app' doesn't exist, need rebuild.
importc-app ~master: building configuration "application"...
Running pre-build commands...
Running gcc -g -O0 -c -o zstd_binding.o source/zstd_binding.c
dmd-beta -c 
-of.dub/build/application-debug-linux.posix-x86_64-dmd_v2.101.0-beta.1-36-ga2865d74fb-9DB8925B9A720899BDD003C68BC85F85/importc-app.o -debug -g -w -version=Have_importc_app -Isource/ source/app.d -vcolumns
Linking...
dmd-beta 
-of.dub/build/application-debug-linux.posix-x86_64-dmd_v2.101.0-beta.1-36-ga2865d74fb-9DB8925B9A720899BDD003C68BC85F85/importc-app .dub/build/application-debug-linux.posix-x86_64-dmd_v2.101.0-beta.1-36-ga2865d74fb-9DB8925B9A720899BDD003C68BC85F85/importc-app.o -L--no-as-needed -L-lzstd -Lzstd_binding.o -g
Copying target from 
/home2/cschlote/build/dlang/importc-tests/dubbed/.dub/build/application-debug-linux.posix-x86_64-dmd_v2.101.0-beta.1-36-ga2865d74fb-9DB8925B9A720899BDD003C68BC85F85/importc-app to /home2/cschlote/build/dlang/importc-tests/dubbed
```

Without the ```preBuildCommands``` and without passing the 
resulting object file to the linker, the ```relatedCode()``` 
doesn't exist. And linking is failing.



More information about the Digitalmars-d-learn mailing list