[ previous ] [ next ] [ threads ]
 To :  <Yate@v...>
 From :  "Andrew McDonald" <andrew.mcdonald@n...>
 Subject :  [yate] Dllexport and template RefPointer class
 Date :  Mon, 21 Aug 2006 14:57:25 +0800

In yateclass.h the YATE_API macro is used to generate dllexport/dllimport declarations for the libyate dll.

In this header the template class RefPointer is declared using the YATE_API macro.

template  class YATE_API RefPointer : public RefPointerBase

However being a template class this declaration will generate no exportable entries in the dll.
Thus it makes no sense to attempt to export a template, although specific template instantiations can be exported from dll's if desired.

Consequently link errors are generated from modules that attempt to use RefPointer (and dllimport) e.g.

ysipchan.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall TelEngine::RefPointer::~RefPointer(void)" (__imp_??1?$RefPointer@VYateSIPConnection@?A0x87dae242@@@TelEngine@@QAE@XZ) referenced in function __unwindfunclet$?run@YateSIPEndPoint@?A0x87dae242@@UAEXXZ
Release/ysipchan.yate : fatal error LNK1120: 1 unresolved externals

Removing YATE_API from the declaration corrects the problem. 


Andrew McDonald
System Architect

> Norwood Systems Australia Pty Ltd
71 Troy Terrace
PO Box 1281
Subiaco, WA 6904

> Tel	+61 8 9380 7766		
> Fax	+61 8 9380 7733  		
> The information in this email, and any attachments, may contain confidential information and is intended solely for the attention and use of the named addressee (s). It must not be disclosed to any person(s) without authorization. If you are not the intended recipient, or a person responsible for delivering it to the intended recipient, you are not authorized to, and must not, disclose, copy, distribute, or retain this message or any part of it. If you have received this communication in error, please notify the sender immediately.