On 10/28/22 1:45 PM, Carsten Schlote wrote:
Hi,
I created a Dub project containing two files: app.d and zstd_binding.c
```
$ cat source/zstd_binding.c
#include <zstd.h>
#include <zstd_errors.h>
#include <stdio.h>
void relatedCode(void)
{
printf("Hallo! This is some output from C code!\n");
}
```
and
```
$ cat source/app.d
import std.conv;
import std.stdio;
import zstd_binding;
void main()
{
auto versionNr = ZSTD_versionNumber();
auto versionStr = ZSTD_versionString();
writefln("Version Info: Numeric %d String %s", versionNr,
versionStr.to!string);
/** more code stripped */
relatedCode(); // The linker can't find it....
}
```
Accessing ZSTD works perfect. For linking you must give "-lzstd". So
far, so good. The problem started, when I try to access the
```relatedCode()``` C function. There is simply no code generated for
this C function. I need to compile the C separately into an object file
and pass it as extra linker argument.
I expected that ImportC also allows to import C functions and creates
the required code on the fly.
Is this a bug? What's wrong?
Are you passing the c file to the compiler? Also, you must be using dmd
for ImportC currently.
What is your build line?
-Steve