Visual C++链接器崩溃(VS2008 SP1)

3
以下这段代码用于生成质数,在Debug模式下编译和运行正常,但在Release模式下构建时总是似乎会导致编译器崩溃:
#include <vector>
#include <algorithm>
#include <cstdlib>
#include <iostream>

template<typename T> class PrimeGen {
    struct Elim {
        T p ;
        T e ;
    } ;

    class Elim_cmp {
    public:
        bool operator()(const Elim& e1, const Elim& e2) { return e1.e > e2.e; }
    } ;

    std::vector<Elim> elim_heap ;
    T last ;

public:
    PrimeGen() {
        Elim e0 = { 2, 4 } ;
        elim_heap.reserve(1024) ;
        elim_heap.push_back(e0) ;
        last = 2 ;
    }

    T next() {
        T n = last ;
        bool prime;
        do {
            n ++ ;
            prime = true ;
            while(n == elim_heap.front().e) {
                if(prime) prime = false ;
                std::pop_heap(elim_heap.begin(), elim_heap.end(), Elim_cmp()) ;
                Elim& elim = elim_heap.back() ;
                elim.e = elim.p + n ;
                std::push_heap(elim_heap.begin(), elim_heap.end(), Elim_cmp()) ;
            }
        } while(!prime) ;
        Elim e = { n, 2*n } ;
        elim_heap.push_back( e ) ;
        std::push_heap(elim_heap.begin(), elim_heap.end(), Elim_cmp()) ;
        return last = n ;
    }
} ;

int main()
{
    using namespace std ;
    PrimeGen<unsigned int> pgen ;
    for(int i=0; i<100; i++) {
        cout << pgen.next() << endl ;
    }
    system("pause") ;
}

有人能看出这是为什么吗?还是我遇到了那些罕见的情况之一,编译器而不是代码应该受到责备?

我收到的错误如下:

error PRJ0002 : Error result -1073741819 returned from 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\mt.exe'.

如果有其他正在运行Visual Studio的人愿意花时间尝试在发布模式下构建代码(我已经删除了任何外部依赖项,所以应该只是复制和粘贴),我将不胜感激。
更新:经过进一步审查,似乎即使对于简单的“Hello World”代码,mt.exe在我的发布模式下仍然会崩溃,因此我的安装肯定存在问题。我打算重新安装所有内容,这应该可以解决问题。版主们,请随时关闭此问题。

1
使用VC++ 2010 SP1可以轻松地在x86和x64平台上进行构建并发布。 - ildjarn
1
我能够顺利地编译/链接这个项目(VS 2008 9.0.21022.8),没有出现任何问题。我没想到会这样,因为我有一些多项目解决方案,经常会导致链接器崩溃,但是对我来说这并不可重复 - 经常第二次按F7就可以构建第一次失败的内容而没有进一步的错误。 - mah
1
mt.exe仅嵌入清单。也许一些文件最终被锁定了?你可以尝试清理解决方案(确保所有生成的文件都已删除),然后重新构建。 - Bart
1
已使用 VC++ Express 2010 成功构建了调试版和发布版,供参考。 - user2100815
将您的更新更改为答案,稍后可以接受它作为正确答案。 - user1228
1个回答

0

一些程序,例如反病毒程序,在链接器尝试嵌入清单文件的同时扫描file.exe文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接