在Windows窗体应用程序中使用boost序列化
Using boost serialization with Windows Forms Application
我对boost和。net框架有一个问题。我编写的类没有。net。这个项目工作得很好,现在我将类文件包含到windows窗体应用程序中。在singleton.hpp(一个boost-library)中发生了许多编译器错误,例如"__declspec(dllexport)不能与/clr:pure或/clr:safe一起使用"。我创建了一个例子。在Form1-header中,只包含这个类,不做其他任何事情,只是从Visual Studio 2010生成的代码。
这是一个测试类,我创建它是为了向您展示一个简单的案例:#ifndef FOO_H
#define FOO_H
#include <boost/archive/xml_oarchive.hpp>
#include <boost/archive/xml_iarchive.hpp>
class Foo
{
private:
int name;
public:
void setName(int name);
int getName(void);
private:
friend boost::serialization::access;
template<class Archive>
void serialize (Archive& arch, const unsigned int)
{
arch & BOOST_SERIALIZATION_NVP(this->name);
}
};
#endif
我尝试切换/clr:纯到/clr,这样编译器可以编译它,但是在启动程序时发生了一个错误。在exe文件中,它的标题是"Debug Assertion Failed!"在消息框中,你也可以看到"Expression: _crtisvalidheappointment (pUserData)"。目前我使用boost 1.52.0,但我也尝试过boost 1.53.0。我用"bootstrap.bat"answers"bam .exe"安装了boost。
有人知道这个问题的解决办法吗?
好了,Hans Passant找到了解决方案。我发布的方式,为一些谁有同样的问题,不知道如何改变/clr。必须将/clr:pure更改为/clr。所发生的错误只是暂时的。现在它起作用了。
要在Visual Studio(2010/2012)中更改/clr:pure,您必须进入项目选项卡并单击属性。点击C/c++>>General,将"公共语言运行时支持"从/clr:pure改为/clr。
相关文章:
- C++boost序列化多态性问题
- 将 boost 序列化对象的 asio::streambuf 表示转换为 Beast 的 DynamicBody req.body()
- 如何使用 Boost 序列化mersenne_twister_engine?
- boost::序列化中的派生类偏移量计算.有效吗?
- C++ Boost - 序列化错误 - 将"const B"作为"this"参数
- 序列化模式类似于boost::序列化
- 使用 boost::序列化代码将 *this 传递给模板函数会产生错误
- 使用 boost::序列化序列化 std::vector of unique_ptr 在 Linux 上失败
- 使用 boost::序列化将派生类指针序列化为向量时出现问题
- 跳过层次结构中的中间类,并使用boost ::序列化
- 使用Boost序列化std ::乘坐
- Boost::序列化存储结构时的堆栈溢出错误
- 2D 矢量未正确保存并加载 boost::序列化库
- 使用Boost序列化保存和检索多个对象
- 使用boost::序列化递归图结构时,如何防止堆栈溢出
- 特征矩阵+Boost::序列化/C++17
- C++Boost序列化:输入流错误
- 将Boost序列化文本存档转换为结构化格式
- Microsoft Guid guid serialization使用Boost序列化
- Boost::序列化 - 如何序列化需要数据分配但没有默认构造函数的数据结构