Compiling with -unittest on a c wrapper

simendsjo simendsjo at gmail.com
Fri Feb 24 01:06:33 PST 2012


Given the header file mymodule.h:
void f(void);

I'm creating mymodule.d:
extern(C) void f();

It works fine when compiling with this library, but when I compile with  
-unittest, I get undefined reference to ModuleInfo:
sample.o:(.data+0x210): undefined reference to  
`_D7mylibrary7mymodule12__ModuleInfoZ'

What am I doing wrong?

I saw the following snippet in deimos/openssl:
// Very boiled down version because we cannot use std.traits without  
causing
// DMD to create a ModuleInfo reference for _d_util, which would require  
users
// to include the Deimos files in the build.
template ExternC(T) if (is(typeof(*(T.init)) P == function)) {
	static if (is(typeof(*(T.init)) R == return)) {
		static if (is(typeof(*(T.init)) P == function)) {
			alias extern(C) R function(P) ExternC;
		}
	}
}

.. but I'm not sure if this relates to my problem..


More information about the Digitalmars-d-learn mailing list