Nordlöw
Nordlöw

Reputation: 12138

Linking with gl3n Errors

When I try to link my minimal program

import gl3n.linalg;
pragma(lib, "gl3n");
void main(string args[]) {
}

against the OpenGL library gl3n as

dmd -debug -gc -unittest -D -Dd/home/per/.emacs.d/auto-builds/dmd/Debug-Boundscheck-Unittest/home/per/Work/cognia/ -w  ~/Work/cognia/t_opengl.d -of/home/per/.emacs.d/auto-builds/dmd/Debug-Boundscheck-Unittest/home/per/Work/cognia/t_opengl

it errors as

LANG=en dmd -debug -gc -unittest -D -Dd/home/per/.emacs.d/auto-builds/dmd/Debug-Boundscheck-Unittest/home/per/Work/cognia/ -w  ~/Work/cognia/t_opengl.d -of/home/per/.emacs.d/auto-builds/dmd/Debug-Boundscheck-Unittest/home/per/Work/cognia/t_opengl
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../lib/libgl3n.a(util.o): In function `no symbol':
gl3n/util.d:(.text+0x6): undefined reference to `_Dmodule_ref'
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../lib/libgl3n.a(linalg.o): In function `no symbol':
gl3n/linalg.d:(.text+0x6): undefined reference to `_Dmodule_ref'
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../lib/libgl3n.a(plane.o): In function `no symbol':
gl3n/plane.d:(.text+0x6): undefined reference to `_Dmodule_ref'
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../lib/libgl3n.a(plane.o): In function `_D4gl3n5plane13__T6PlaneTTfZ6PlaneT8opEqualsMxFNaNbNfS4gl3n5plane13__T6PlaneTTfZ6PlaneTZb':
gl3n/plane.d:(.text._D4gl3n5plane13__T6PlaneTTfZ6PlaneT8opEqualsMxFNaNbNfS4gl3n5plane13__T6PlaneTTfZ6PlaneTZb+0x51): undefined reference to `_D4gl3n6linalg16__T6VectorTfVi3Z6Vector53__T8opEqualsTxS4gl3n6linalg16__T6VectorTfVi3Z6VectorZ8opEqualsMxFNaNbNfxS4gl3n6linalg16__T6VectorTfVi3Z6VectorZb'
/home/per/opt/x86_64-unknown-linux-gnu/dmd/bin/../lib/libgl3n.a(math.o): In function `no symbol':
gl3n/math.d:(.text+0x6): undefined reference to `_Dmodule_ref'
collect2: error: ld returned 1 exit status
--- errorlevel 1

What is _Dmodule_ref?

Upvotes: 0

Views: 129

Answers (1)

Adam D. Ruppe
Adam D. Ruppe

Reputation: 25605

_Dmodule_ref is a special symbol in druntime. The problem here is most likely related to either a wrongly installed druntime or an object.d in the current working directory.

1) Does compiling hello world work? If not, might help to reinstall dmd/druntime/phobos.

2) Is there a file in the same directory as your gl3n app called object.d? If so, rename it or something since dmd can see it there and get confused, thinking you want it to act as a custom druntime.

Upvotes: 1

Related Questions