我遇到了boost和.net-Framework的問題。我沒有.NET編寫我的課程。這個項目運行良好,現在我將類文件包含到Windows窗體應用程序中。在singleton.hpp(一個boost庫)中出現了許多編譯器錯誤,像「__declspec(dllexport)不能用於/ clr:pure或/ clr:safe」。我創建一個例子。 在Form1-header中,只有這個類是包含的,而且沒有其他任何東西是由Visual Studio 2010生成的代碼完成的。在Windows窗體應用程序中使用boost序列化
這是一個測試類,我創建向你展示一個簡單的例子:
#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,這個編譯器可以編譯它,但在啓動程序時發生錯誤。它的標題是「Debug Assertion Failed!」在exe文件中。在消息框中,您還可以閱讀「Expression:_CrtIsValidHeapPointer(pUserData)」 此刻我使用boost 1.52.0,但我也嘗試過使用boost 1.53.0。我用「bootstrap.bat」和「bjam.exe」安裝了boost。
有人知道這個問題的解決方案嗎?
您必須使用/ clr,不是純粹的。沒有人可能猜到「發生了什麼錯誤」可能意味着什麼。 –
@Hans Passant哦,對不起,我認爲這不重要。這是「調試斷言失敗!」發生在exe文件中。在消息框中,您還可以讀取「Expression:_CrtIsValidHeapPointer(pUserData)」 – Fab
請注意,'BOOST_SERIALIZATION_NVP'從其參數中生成元素名稱,所以名稱將是「this-> name」。我不確定xml解析器是否適用於「 - >」。改用'BOOST_SERIALIZATION_NVP(name)'或者如果它應該是完全限定的,則使用臨時的本地變量。 –