On 2013-02-07 at 08:42 -0800, Todd Lyons wrote:
> In log.c, there is a function named log_create.  You pass it a const
> unsigned string for the filename, it creates the file and passes back
> a file descriptor.  The problem I'm having is that the function is not
> declared anywhere.  I cannot figure out why building log.c doesn't
> complain, but I do know that it's used only in log.c, nowhere else, no
> doubt that has something to do with it.  In my dmarc.c, I have
> included "exim.h" and "functions.h", and I get this error:

> Thinking I was brilliant, I added 'extern const int log_create(uschar
> *);' to my dmarc.c, and it then builds dmarc.o properly.  But the
> linking of the exim binary fails:

The function:

    static int
    log_create(uschar *name)
    {
    // ...
    }

See that `static`?  Remove it.

Static, at file scope, means only visible to this compilation unit, and
the symbol won't be exported in the .o file to be visible to the linker.

Which I think you knew, but are having one of those blind-spot moments
which ended 10 seconds ago with you wanting a wall to bang your head
against.

Coffee is good.

-Phil

-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to