【发布时间】:2009-10-16 13:57:41
【问题描述】:
正如我在另一个 SO 问题中指出的那样,我遇到了 this article。当我通过 MSVC7.1 编译 boost 1.40 并弹出几个 C4251 警告时,问题出现了。
现在,读完这篇文章后,我想知道:通常不鼓励导出模板代码,例如
class DLLEXPORT_MACRO AClass
{
public:
std::vector<int> getVecCopy() { return myVec; }
...
}
假设这段代码是通过 MSVC7.1 编译成 DLL 的。 虽然此代码在从其他 MSVC7.1 代码中引用时不会产生任何错误,但据说在 MSVC8 代码中引用此 DLL 会产生运行时崩溃(内存对齐问题?)。
既然这显然很糟糕......解决导出模板代码问题的“最佳实践”是什么?
【问题讨论】: