[Issue 922] New: export keyword causes undefined references on linux
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Feb 2 11:08:55 PST 2007
http://d.puremagic.com/issues/show_bug.cgi?id=922
Summary: export keyword causes undefined references on linux
Product: D
Version: 1.00
Platform: PC
OS/Version: Linux
Status: NEW
Keywords: link-failure
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: torhu at yahoo.com
Let's say you have a C lib that you want to link with your D app. You'd have a
D 'header' like this:
// need access to global_var defined in the C lib
export extern extern (C) {
int global_var;
}
The export keyword is there to facilitate dynamic linking on Windows. On
linux, it causes link failure, both with static and dynamic linking.
"undefined reference to `_imp__global_var'". This is not a actual error
message, since I don't have access to a linux box. But similar errors have
been reported by others.
Supposedly, 'export' is not needed with ELF, as all symbols are visible by
default. So I suppose dmd should ignore export on linux?
The workaround we're using is to have a script remove 'export' from the files
before compiling on linux. Pretty ugly. Littering code with version
statements, or reorganizing it so we can put 'version (Windows) export:'
somewhere wasn't very attractive either.
--
More information about the Digitalmars-d-bugs
mailing list