Использование ускоренной сериализации с приложением Windows Forms

У меня проблема с boost и .net-Framework. Я написал свои классы без .net. Этот проект работал нормально, и теперь я включаю файлы классов в приложение Windows Forms. Произошло много ошибок компилятора, что-то вроде «__declspec (dllexport) не удалось использовать с / clr: pure или / clr: safe» в singleton.hpp (boost-library). Я создаю пример.
В заголовок Form1 включен только этот класс, и больше ничего не делается, только из сгенерированного кода 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: pure на / clr, с этим компилятор мог скомпилировать его, но при запуске программы произошла ошибка. Это называется «Отладка не подтверждена!» в exe-файле. В окне сообщения вы также можете прочитать «Выражение: _CrtIsValidHeapPointer (pUserData)». В настоящее время я использую boost 1.52.0, но я также пробовал его с boost 1.53.0. Я установил boost с помощью «bootstrap.bat» и «bjam.exe».

Кто-нибудь знает решение этой проблемы?

0

Решение

Хорошо, Ганс Пассант нашел решение. Я выкладываю способ для тех, кто имеет ту же проблему и не знает, как изменить / clr. Вы должны изменить / clr: pure на / clr. Произошедшая ошибка была лишь временной. Теперь это работает.

Чтобы использовать / clr: pure в Visual Studio (2010/2012), необходимо войти на вкладку «Проект» и нажать «Свойства». Там кликните на C / C ++ >> General и выберите «Common Language RunTime Support» из / clr: pure в / clr.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector