On 11/2/10 7:47 PM, scrappylildude wrote:
Hello,
New to D, but I am loving it so far.
I am having some trouble linking to a C library static library (LibRaw 0.10.0).
I ran htod on the LibRaw
header files, and fixed up the resulting file by hand.
Now when I compile and attempt to link, I get one error:
Undefined symbols:
"_D16libraw_c_headers12__ModuleInfoZ", referenced from:
_D10helloworld12__ModuleInfoZ in helloworld.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
--- errorlevel 1
Obviously I don't have any identifiers by these names. I wrote a simple library
which printf's "Hello
World" and linked to it without problems. So I thought the problem might be
due to name mangling
incompatibilities, so I recompiled libraw under gcc4.2 and llvm-gcc and got the
same issue both times.
Can anyone provide a clue? I know the linker can't resolve the above, but I
have no idea how to go
about fixing it.
Environment: Mac OS X 10.6.4, DMD v2.049.
Say you used htod obtaining libraw_c_headers.d and then used import in
some D program like this:
// File myfile.d
import libraw_c_headers;
... more D code ...
In that case, the module libraw_c_headers.d needs to be actually
included in the build. For example, I assume you now do:
$ dmd myfile.d
Hi, this is your linker and I'll output an incomprehensible message.
&^%$%$#%&^$*&^(*&^*&$&^#%$^#$...@$@#^%$#&^%$*%^&
$ _
You need to do:
$ dmd myfile.d libraw_c_headers.d
$ _
Andrei