Thread overview
undefined reference - Derelict2
May 05, 2012
sergeiV
May 06, 2012
sergeiV
May 06, 2012
sergeiV
May 06, 2012
Jacob Carlborg
May 07, 2012
Stanislav Blinov
May 07, 2012
sergeiV
May 07, 2012
Trass3r
May 08, 2012
Mike Parker
May 05, 2012
After succesful building of the Derelict libraries using: 'make
-flinux.mak DC=dmd', I am unable to compile the provided example
code:
http://svn.dsource.org/projects/derelict/branches/Derelict2/doc/index.html

They look like linker problems to me.

rdmd test.d -Iinclude/Derelict2/import/

test.o:(.data+0x10): undefined reference to
`_D8derelict6openal2al12__ModuleInfoZ'
test.o:(.data+0x18): undefined reference to
`_D8derelict6opengl2gl12__ModuleInfoZ'
test.o: In function `_Dmain':
test.d:(.text._Dmain+0x3d): undefined reference to
`_D8derelict6openal2al10DerelictALC8derelict6openal2al16DerelictALLoader'
test.d:(.text._Dmain+0x61): undefined reference to
`_D8derelict6opengl2gl10DerelictGLC8derelict6opengl2gl16DerelictGLLoader'
collect2: ld returned 1 exit status
--- errorlevel 1

gdc gave an different kind of error:
include/Derelict2/import/derelict/util/compat.di:64: Error:
identifier 'c_long' is not defined

Using a makefile generated errors similar to those for (r)dmd.

dmd 2.059
derelict2 630


May 06, 2012
On Saturday, 5 May 2012 at 23:42:36 UTC, sergeiV wrote:
> After succesful building of the Derelict libraries using: 'make
> -flinux.mak DC=dmd', I am unable to compile the provided example
> code:
> http://svn.dsource.org/projects/derelict/branches/Derelict2/doc/index.html
>
> They look like linker problems to me.
>
> rdmd test.d -Iinclude/Derelict2/import/
>
> test.o:(.data+0x10): undefined reference to
> `_D8derelict6openal2al12__ModuleInfoZ'
> test.o:(.data+0x18): undefined reference to
> `_D8derelict6opengl2gl12__ModuleInfoZ'
> test.o: In function `_Dmain':
> test.d:(.text._Dmain+0x3d): undefined reference to
> `_D8derelict6openal2al10DerelictALC8derelict6openal2al16DerelictALLoader'
> test.d:(.text._Dmain+0x61): undefined reference to
> `_D8derelict6opengl2gl10DerelictGLC8derelict6opengl2gl16DerelictGLLoader'
> collect2: ld returned 1 exit status
> --- errorlevel 1
>
> gdc gave an different kind of error:
> include/Derelict2/import/derelict/util/compat.di:64: Error:
> identifier 'c_long' is not defined
>
> Using a makefile generated errors similar to those for (r)dmd.
>
> dmd 2.059
> derelict2 630

Solved, missed -of:
rdmd -Iinclude/Derelict2/import/
-Linclude/Derelict2/lib/libDerelictAL.a
-Linclude/Derelict2/lib/libDerelictUtil.a -ofderelict_test test.d


May 06, 2012
On Sunday, 6 May 2012 at 01:23:48 UTC, sergeiV wrote:
> On Saturday, 5 May 2012 at 23:42:36 UTC, sergeiV wrote:
>> After succesful building of the Derelict libraries using: 'make
>> -flinux.mak DC=dmd', I am unable to compile the provided example
>> code:
>> http://svn.dsource.org/projects/derelict/branches/Derelict2/doc/index.html
>>
>> They look like linker problems to me.
>>
>> rdmd test.d -Iinclude/Derelict2/import/
>>
>> test.o:(.data+0x10): undefined reference to
>> `_D8derelict6openal2al12__ModuleInfoZ'
>> test.o:(.data+0x18): undefined reference to
>> `_D8derelict6opengl2gl12__ModuleInfoZ'
>> test.o: In function `_Dmain':
>> test.d:(.text._Dmain+0x3d): undefined reference to
>> `_D8derelict6openal2al10DerelictALC8derelict6openal2al16DerelictALLoader'
>> test.d:(.text._Dmain+0x61): undefined reference to
>> `_D8derelict6opengl2gl10DerelictGLC8derelict6opengl2gl16DerelictGLLoader'
>> collect2: ld returned 1 exit status
>> --- errorlevel 1
>>
>> gdc gave an different kind of error:
>> include/Derelict2/import/derelict/util/compat.di:64: Error:
>> identifier 'c_long' is not defined
>>
>> Using a makefile generated errors similar to those for (r)dmd.
>>
>> dmd 2.059
>> derelict2 630
>
> Solved, missed -of:
> rdmd -Iinclude/Derelict2/import/
> -Linclude/Derelict2/lib/libDerelictAL.a
> -Linclude/Derelict2/lib/libDerelictUtil.a -ofderelict_test test.d

This is ofcourse enough:
rdmd -Iinclude/Derelict2/import/ -oftest test.d
(rdmd -Iinclude/Derelict2/import/ test.d FAILS)

Could anybody explain why an output file specification is necessary?
Or is this a bug?

May 06, 2012
On 2012-05-06 03:43, sergeiV wrote:

> This is ofcourse enough:
> rdmd -Iinclude/Derelict2/import/ -oftest test.d
> (rdmd -Iinclude/Derelict2/import/ test.d FAILS)
>
> Could anybody explain why an output file specification is necessary?
> Or is this a bug?

I don't know, you should not need to specify the -of flag.

-- 
/Jacob Carlborg
May 07, 2012
On Sunday, 6 May 2012 at 01:23:48 UTC, sergeiV wrote:
>
> Solved, missed -of:
> rdmd -Iinclude/Derelict2/import/
> -Linclude/Derelict2/lib/libDerelictAL.a
> -Linclude/Derelict2/lib/libDerelictUtil.a -ofderelict_test test.d

This is on Linux? Shouldn't it be something like

rdmd -Iinclude/Derelict2/import -L-Linclude/Derelict2/lib -L-lDerelictAL -L-lDerelictUtil -L-ldl test.d

?
May 07, 2012
> rdmd -Iinclude/Derelict2/import -L-Linclude/Derelict2/lib -L-lDerelictAL -L-lDerelictUtil -L-ldl test.d
Thnx, this works.

Though I was under the impression that the new Derelict2 hierarchy / d interface files in Derelict2/import reduced the neccesity for command line arguments, that is a Derelict related question.

Condsider this solved.
May 07, 2012
> Though I was under the impression that the new Derelict2 hierarchy / d interface files in Derelict2/import reduced the neccesity for command line arguments, that is a Derelict related question.

You may try to use --chatty and compare the output.
May 08, 2012
On 5/7/2012 8:53 PM, sergeiV wrote:
>> rdmd -Iinclude/Derelict2/import -L-Linclude/Derelict2/lib
>> -L-lDerelictAL -L-lDerelictUtil -L-ldl test.d
> Thnx, this works.
>
> Though I was under the impression that the new Derelict2 hierarchy / d
> interface files in Derelict2/import reduced the neccesity for command
> line arguments, that is a Derelict related question.

Well, it does. With all of the imports in a single directory, you don't need to specify multiple import directories. But you will always need to link with the libraries. The import directory doesn't affect that.