我从一个dll中导出了一个继承自std::string
的类。
我在另一个项目中使用它,但是有一个编译错误
错误5错误LNK2005:" public:__ cdecl std :: basic_string,class std :: allocator> :: ~basic_string,class std :: allocator>(void)" (?? 1?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ QEAA @XZ)已在tps_frame.obj中定义J:\ ciplan_workstation \ build \ app \ tpsUtilsd.lib(tpsUtilsd.dll)
我不确定问题是由dll还是lib引起的。到现在为止,我还没有找到原因。
代码如下:
// line_string.h
#include <string>
#include <iostream>
class __declspec(dllexport) line_string : public std::string
{
friend std::istream& operator>>(std::istream& is, line_string& str);
public:
inline operator std::string&() { return *this; }
};
// line_string.cpp
#include "line_string.h"
std::istream& operator>>(std::istream& is, line_string& str)
{
std::getline(is, static_cast<std::string&>(str));
return is;
}