digitalmars.D.learn - How to use templates in a separate library?
- CrazyMan (13/13) Jun 23 2022 I have a separate library and some template interface in it
I have a separate library and some template interface in it
```d
interface IFoo(T)
{
void setValue(const(T) value);
}
```
But when using it in the main program, it throws a linking error.
I found that you can make a sourceLibrary that copies the code
instead of creating a binary. But with it, I also get a linking
error, and at the same time it is no longer associated with my
interface, but with a third-party dependency (bindbc.opengl)
What can I do to fix this?
Jun 23 2022
On Thursday, 23 June 2022 at 08:12:32 UTC, CrazyMan wrote:
I have a separate library and some template interface in it
```d
interface IFoo(T)
{
void setValue(const(T) value);
}
```
But when using it in the main program, it throws a linking
error. I found that you can make a sourceLibrary that copies
the code instead of creating a binary. But with it, I also get
a linking error, and at the same time it is no longer
associated with my interface, but with a third-party dependency
(bindbc.opengl)
What can I do to fix this?
This is insufficient information to help you.
- Separate library could mean multiple things: a compiler
library, a static linked binary, a SO/DLL binary.
- What error is thrown?
- Are you using `extern` declarations?
For a successful build the linker needs to get all symbols from
any referenced source. The template isn't an actual symbol, it's
just a information for the compiler to generate one. It says
nothing about the symbol will be really generated or not. Also
the linker needs to know if a library has to be used.
Jun 23 2022
On Thursday, 23 June 2022 at 08:12:32 UTC, CrazyMan wrote:linkingmake sure you use the -i flag when compiling
Jun 23 2022
On Thursday, 23 June 2022 at 23:50:42 UTC, monkyyy wrote:On Thursday, 23 June 2022 at 08:12:32 UTC, CrazyMan wrote:But note, that would be the opposite of using a library.linkingmake sure you use the -i flag when compiling
Jun 24 2022









frame <frame86 live.com> 