ブーストと .net-Framework に問題があります。私は.netなしでクラスを書きました。このプロジェクトは正常に機能し、今ではクラス ファイルを Windows フォーム アプリケーションに含めています。singleton.hpp (ブースト ライブラリ) で "__declspec(dllexport) could't use with /clr:pure or /clr:safe" のような多くのコンパイラ エラーが発生しました。例を作成します。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 に切り替えようとしました。これにより、コンパイラはそれをコンパイルできましたが、プログラムの開始中にエラーが発生しました。「Debug Assertion Failed!」というタイトルです。exeファイルで。メッセージボックスには、"Expression:_CrtIsValidHeapPointer(pUserData)" も表示されます。現在は boost 1.52.0 を使用していますが、boost 1.53.0 でも試しました。「bootstrap.bat」と「bjam.exe」でboostをインストールしました。
誰かがこの問題の解決策を知っていますか?