转换应用程序以使用dll。 class'std :: map< _Kty,_Ty>'需要让dll接口供类的客户使用

时间:2009-10-12 21:56:40

标签: c++ dll templates

这似乎是一个常见的错误,但大多数人在线选择忽略警告并继续前进。我不想忽视这个警告。

基本上,当使用__declspec(dllexport)将项目转换为使用dll时,编译器在处理模板和stl对象时遇到问题。列出了问题的解释和建议的解决方案here。我已经实现了为地图建议的巨型#define语句,但无济于事。

你是如何做到这一点的??我的代码中充斥着像wchar_ts和std :: maps这样的东西,所以希望这个解决方案不涉及为每个类编写远程复杂的东西!

1 个答案:

答案 0 :(得分:1)

阅读this similar thread,以便对该主题进行详细讨论。我会建议以下任何一种:

  1. 使用静态库
  2. 隐藏非template compiler firewallpimpl背后的所有template相关类型和界面。
  3. 在使用链接器从Visual C ++ 6.0,2003到2003再到2005之后,我绝不会__declspec(dllexport)任何有templatebool,{{1}的内容},或再次签名中的wchar_t。实际上,我们刚刚完全停止使用DLL。生活现在变得如此简单;)