MS Visual C++中的dllimport和模板

dllimport and templates in MS Visual C++

本文关键字:dllimport 中的 Visual C++ MS      更新时间:2023-10-16

我有这样的类

class A_DLL A
{
   ...
   template <class T> someFunction(const T &v);
}

在图书馆 A.dll。A_DLL在构建 a 时__declspec(dllexport).dll在使用 a.dll 时__declspec(dllimport)

问题是当我尝试在链接到 a 的某个可执行模块中使用"someFunction"时.dll它可以工作。但是,当我在其他库(b.dll)中使用它时,它会给我一条关于未解析的外部(someFunction和其他模板)的错误消息。显然我不应该在模板上使用__declspec,但是如何用__declspec制作一个类呢?

您可以使用如下声明:

template class A_DLL MyTemplateClass<int>;

此语句将生成模板类实例化并将其导出到正在生成的 DLL 中(或根据从预处理器设置A_DLL的方式导入它)。

您也可以点击此链接以获取更详细的说明。