On Tuesday, 26 November 2024 at 10:34:07 UTC, Dakota wrote:
On Saturday, 23 November 2024 at 12:09:22 UTC, IchorDev wrote:

Why not load the libraries at runtime and look the pointers up with symbol names? Or do you really need the compiler to do it for you?

Because I need link some part static c library, they link global var by symbols name, I can not change this part.


What I can do is provide the symbol at runtime, I can not think a way to work around this at runtime. (maybe for function, but not for global vars)

I'm pretty sure loading the exported symbols of global variables works the same way, they'd just be pointers to data instead of to code.

```d
__gshared int* foreignLib_some_integer;

//to load:
foreignLib_some_integer = cast(int*)loadSymbol(foreignLib, "foreignLib_some_integer");

//using in your code:
if(*foreignLib_some_integer == 10){
  //etc.
}
```

Reply via email to