[pjsip] Building pjsua as DLL

Tomás Valenta vali at kamarad.cz
Tue Nov 13 14:33:03 EST 2007

no depencies set --- it is obvious.
To the second problem: Yes, this is the only error and I found out what it
is caused by, perhaps. Function pj_throw_exception_() is declared in the
header as:
PJ_DECL_NO_RETURN(void) pj_throw_exception_(pj_exception_id_t id) 
and in the source it is defined as:
PJ_DEF(void) pj_throw_exception_(int exception_id)
So the error is that PJ_DECL_NO_RETURN does not declare a function with 
dllexport, but PJ_DEF does.

Pjsua-lib library compiled as DLL works fine with empty 
PJ_EXPORT_DEF_SPECIFIER so for my purposes I commented out the line in 
cc_msvc.h. But if someone wants to call pj_throw_exception_() from the host 
application, it must be declared dllexport as well. Declaring function with 
dllexport in forward declaration (header) is enough. Doing so in definition 
is needless then.


----- Original Message ----- 
From: "Benny Prijono" <bennylp at pjsip.org>
To: "pjsip embedded/DSP SIP discussion" <pjsip at lists.pjsip.org>
Sent: Tuesday, November 13, 2007 4:44 PM
Subject: Re: [pjsip] Building pjsua as DLL

Tomás Valenta wrote:
> Hi Benny,
> I am reporting some problems with building pjsua as DLL in Visual Studio
> 8.
> In VS8 solution I declare macros PJ_DLL and PJ_EXPORTING in projects whose
> functions I want to use (e.g. pjlib, pjmedia and pjsua-lib). In project
> pjsua-lib I set output as DLL. Macros PJ_EXPORT_DECL_SPECIFIER etc. are
> automaticaly defined in cc_msvc.h.

Thanks for reporting this. I never tried to build the libraries as
DLL myself, so any feedbacks on this will be good.

> First problem:
> In the solution there are no depencies on other projects so the projects
> won't be built and linked. I had to set the depencies manually to the same
> ones as in pjsua app.

Yeah, that's expected. As a static library, pjsua-lib does not need
to have dependencies to other libs, hence the dependencies were not set.

> Second problem:
> See following compiler error:
> c:\pjproject-0.8.0\pjlib\src\pj\except.c(41) : error C2375:
> 'pj_throw_exception_' : redefinition; different linkage
> c:\pjproject-0.8.0\pjlib\include\pj\except.h(302) : see declaration of
> 'pj_throw_exception_'

Was this the only error that you get? I expect to see more similar
errors from other sources frankly.

> I don't know exactly what it means but commenting out the line
> //#define PJ_EXPORT_DEF_SPECIFIER     __declspec(dllexport)
> in cc_msvc.h solves the problem.

So does the DLL work? Do you see symbols exported from the DLL?

I kinda expect that this wouldn't work, as you just disabled the
syntax to export the symbols. But I could be wrong!


> Have a nice day.
>     Vali

Visit our blog: http://blog.pjsip.org

pjsip mailing list
pjsip at lists.pjsip.org

More information about the pjsip mailing list