当你在MSVC的公共接口中创建一个包含模板数据成员的结构体时,编译时会出现警告。
其中一种解决方案是在DLL中导出模板类型(请参见this KB文章)。
我提出这个问题是因为我不知道为什么要导出该类型?
我完全误解了吗?在我看来,最好的选择是忽略MSVC的警告。
其中一种解决方案是在DLL中导出模板类型(请参见this KB文章)。
我提出这个问题是因为我不知道为什么要导出该类型?
如果不导出它,则.hpp文件具有足够的信息来自动生成该类型。
如果它是标准库类型,并且您有两个或更多dll,每个dll可能链接到不同版本的标准库,则现在在代码中有多个相同类型的二进制版本。
我完全误解了吗?在我看来,最好的选择是忽略MSVC的警告。
编辑:目前还没有人指出这一点,但我知道并理解如果您的模板中有静态内容,并且希望这些静态内容在单个应用程序中的DLL的所有使用中共享:在这种情况下,您必须导出模板实例化。对于单例对象、日志记录器等情况,这是至关重要的。