2016-03-23 18 views
0

Visual Studio 2010'da 64 bit için proje oluştururken sorun yaşıyorum. Ben destek kütüphanesi ile 64bit için inşa edemedim, ben aşağıda hata alıyorum. 32bit için inşa edebilirim ama 64bit için değil.basic_timed_mutex.hpp (159): önemli hata C1001: Derleyici'de bir iç hata oluştu

\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. 

Aşağıda koduna hatayı işaret ediyor ve tabii ben artırmak kütüphane değiştiremez. Ben hata ama boost kütüphanelerde çıkmasıdır düşünüyorum nerede emin değilim

: Ben

size

Düzenlendi ederim,

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()); 
        } 
       } 
      } 

bana yardım edebilir, bu hata ile karıştı ,

gibi bir cpp dosyası vardır ve "nokta" bir ad alanıdır. Bir başlık dosyasında tanımlıdır artırmak kütüphanelerini kullanıyor ve kodunu

#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 
    } 

Cevap

aşağıdaki hangi:
Nihayet çalıştı !! İki gün süren aramadan sonra başka bir yol buldum.Ben sadece proje yolunda içerme sırasının sırasını değiştirdim. En üstte destek yolu yerleştirdim ve işe yaradı. Bu garip!!!

+0

lütfen sorunu gösteren minimal bir örnek gönderin - derleyebildiğimiz ve çoğaltabileceğimiz bir şey. Ne düşünüyorsun? Bizler, kodunuzu sadece çok iyi bilen, artı derleyicideki tüm kodu bulabilen Yüce Zeka Varlıkları olduğumuz mu? –

+0

@richard Güncelleme. Üzgünüm size ulaşamamış olsaydım. Ben C++ – Raj

+0

içinde bu deneyimi yok Kod, C++ olduğu söylenemez, yönetilen C++ gibi görünüyor. Etiketi güncelledim. –

cevap

1

Aynı sorunu kendim de yaşadım - ve bazı kod bloklarının kendiliğinden artacağı görünüyor. MSVC derleyici araç zincirindeki bir hatadan kaynaklanıyor gibi görünüyor.

devre dışı bırakılması optimizasyonu birçok kullanıcı As per this MSDN article için sorunu çözmek için görünüyor - Ben sorunun Artıracak geçiş yaparak çözüldü konuda mantıklı bir nedeni ya da hata raporu sunmak, ama kendim için isterdim Source from MSDN suggesting this fixSouce on stack-overflow

1.60.

Bu, diğer kullanımların neden trailing-slashes olduğunu bildirdi!

güncelleme: konu olsa işlev işaretçileri tutan şablonları türlerine, sonsuz-döngüler her şeyi neden olabilir görünen bazı tarama sonrasında

. ve her zaman hatanın gerçek kaynağını doğru olarak listelemez (örneğin: hata mesajının söylediği yer değil). Bununla birlikte, optimizasyonun devre dışı bırakılması, sorunun, evrensel olarak yakın bir zamanda - yazılımınızın daha yavaş çalışabileceği maliyetle - çözündüğü anlamına geliyor.

+0

Elbette. Yükseltmeyi yükseltmeyi deneyeceğim ve size bildireceğim. Teşekkürler – Raj

+0

@Raj İyi şanslar, eğer başarısız olursa optimizasyon pragma'yı denediğinizden emin olun: https://msdn.microsoft.com/en-us/library/chh3fb0k.aspx –

+0

Teşekkür ederim. Ben C++ deneyimliyim.100'den fazla proje içeren bir uygulama için sadece kütüphaneler yapıyorum. Daha önce hiç pragma kullanmamıştım. Pragma'nın fonksiyonun dışında kullanıldığını okudum. Tabii ki destekte hiçbir şey değiştiremiyorum. Hemen yukarıda değiştirmek zorundayım, hatayı alıyorum ilgili projede işlevi (unlock()) çağrılır. Ben haklı mıyım – Raj