草庐IT

TemplatedStaticLib

全部标签

c++ - 类和函数模板实例化的 Visual Studio dll 导出问题

我在win7中使用VS2008,在CentOS18中使用g++4.7。只有在Windows上使用动态共享库时才会出现此问题。当我将它转换为静态库时,程序链接正常。我知道在共享库中,模板函数/类应该在头文件中定义,或者模板类型(参数)的模板实例化应该通过编译单元提供。我选择了后者。我以前做过,我经历过Whycantemplatesonlybeimplementedintheheaderfile?C++SharedLibrarywithTemplates:Undefinedsymbolserror但我无法弄清楚为什么在我将库转换为dll后在Windows中它无法解析符号:错误LNK2019

c++ - 具有模板实例化的模板静态库

我正在处理一个静态库,该库有多个类模板和函数模板。我知道为了在静态库中使用模板,所有内容(声明/定义)都需要在头文件中。但是,在这种特殊情况下,因为我知道我认为我可以使用前向声明特化的特化类型。这个技巧与类模板(及其函数)配合得很好,我可以使用我的应用程序代码中的所有库函数。但是,一旦我在库中引入免费函数模板并尝试使用我的应用程序代码中的免费模板函数,它就会给我链接器错误:errorLNK2019:unresolvedexternalsymbol"classTemplatedStaticLib__cdeclHelpingRegistration(int)"(??$HelpingRegi