Dependent Origination

something about unnamed namespace

Posted on: September 28, 2012

I have encountered a ‘cannot find reference to function’ error from the linker today and couldn’t figure out why. Thanks to a colleague who recently worked on the build system — we figured out why.

library file:

namespace A {

namespace {

struct D { definition; }


return_type example_function(const vector<D>&);


test file:

#include “library.h”

vector<D> v;


this test cannot pass linker because linker would complain it couldn’t find reference to example_function.

How did we figure out?

1. grep through the actual compile command to see the *.o file is in it

2. use nm on the *.o file so we can see the function symbol is in the object file

3. clearly this is about parameter types now — i confirmed it passing a simple type

4. then colleague realizes that it is because of the unnamed space — it is assigned to a random number while compiling the library — and another random number assigned while compiling the test — so the two symbols won’t match up in the symbol table and linker couldn’t find the prototype of the function


1. take out the unnamed space or give it a name


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

September 2012
« Aug   Oct »


  • is reflecting on the past three years and reading the article on divided self aptly showing up at the top of my tweeter feed. 3 months ago
  • is having a nice feeling of connecting dots all over the place. they are now illuminating the same point. 4 months ago
  • Style Transfer is fun! TensorFlow rocks! #WTM17 6 months ago
  • couldn't get over the jetlag, sleeping during the day from seven to four, for days. 7 months ago
  • is emptying trash and happily discovering the available disk space now ranks at 100G+. 9 months ago

Flickr Photos

%d bloggers like this: