Visual Studio 2010で64ビットのプロジェクトをビルドするときに問題があります。私はライブラリを増強して64ビット用にビルドすることができませんでした。私は以下のエラーに陥っています。私は32ビットではなく64ビットで構築することができます。basic_timed_mutex.hpp(159):致命的なエラーC1001:コンパイラで内部エラーが発生しました
\boost_1_49_0\boost\thread\win32\basic_timed_mutex.hpp(159): fatal error C1001: An internal error has occurred in the compiler
(compiler file 'f:\dd\vctools\compiler\utc\src\p2\wvm\mdmiscw.c', line 2704)
5 To work around this problem, try simplifying or changing the program near the locations listed above.
5> Please choose the Technical Support command on the Visual C++
5> Help menu, or open the Technical Support help file for more information
5> The command exited with code 2.
以下のコードには誤りがありますが、私はブーストライブラリを変更できません。私は
void unlock()
{
long const offset=lock_flag_value;
long const old_count=BOOST_INTERLOCKED_EXCHANGE_ADD(&active_count,lock_flag_value);
if(!(old_count&event_set_flag_value) && (old_count>offset))
{
if(!win32::interlocked_bit_test_and_set(&active_count,event_set_flag_bit))
{
win32::SetEvent(get_event());
}
}
}
このエラーで混乱していますあなたは私を助けてくださいすることができ、
は
編集ありがとう:
私はどこにエラーを確認していないが、私はそのブーストライブラリに考えます
Class a::a(, point,)
{
}
のようなcppファイルがあり、 "point"は次のような名前空間です。ブーストライブラリを使用しているヘッダファイルで定義されており、それがコード
#include <boost/thread.hpp>
#include <boost/thread/recursive_mutex.hpp>
namespace point
{
// some work1
void fun()
{
boost::unique_lock<boost::recursive_mutex> lck(*m_RedrawMutex);
// some work2
}
// some work3
}
回答は次の通りです:それは最終的に働いた
を! 2日の検索の後、私は別の方法を見つけました。私はちょうどそれがブーストbasic_timed_mutex.hppを使用していたプロジェクトヘッダーのインクルードパスの順序を変更しました。私はブーストパスを最上部に配置し、それはうまくいった。おかしいです!!!
問題を示す最小限の完全な例を投稿してください。コンパイルして複製できるものです。どう思いますか?私たちはあなたのコードとコンパイラのすべてのコードを全面的に知ることができる最高インテリジェンスの存在ですか? –
@richard更新しました。申し訳ありませんが、私はあなたに連絡することができませんでした。私はその経験をC++で持っていません – Raj
コードはmanaged C++のように見えますが、それは合理的にはC++とは言えません。私はタグを更新しました。 –