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.
}
```