小编psu*_*lue的帖子

使用"ar"组合.o和.a文件(Linux)

我正在尝试创建一个包含目标文件和现有静态库的静态库,这些库都是在构建过程中先前编译的.有没有一种简单的方法可以使用"ar"来执行此操作,还是需要解压缩(ar x library_name)每个库并将其目标文件添加到统一库中?

linux linker static-libraries

16
推荐指数
2
解决办法
2万
查看次数

跨越VS项目的STL矢量腐败

我有一个Visual Studio 2005解决方案,其中包含几个彼此独立构建的项目.主项目静态链接其他项目.我在其中一个静态链接库中得到了非常奇怪的STL向量损坏.例如,我声明一个std :: vector然后执行一个sort( thatVector.begin(), thatVector.end() ),但是当我调试它并查看反汇编时,我看到:

std::vector<SomeOtherClass<SomeOtherTemplateType>,std::allocator<SomeOtherClass<SomeOtherTemplateType> > >::begin
Run Code Online (Sandbox Code Playgroud)

令人难以置信的奇怪的是,SomeOtherClass并且SomeOtherTemplate在主项目中声明,所以这个库应该完全不知道它们.

我试过冻结所有其他线程,认为其中一个可能是腐败thatVector,但没有骰子.我完全失去了.有没有人经历过这样的事情?

编译信息: - 主程序/ Zi,自定义优化(基本上是可调试的发布版本) - 静态库/ Zi,/ Od

链接信息:/ DEBUG

c++ stl vector visual-studio

4
推荐指数
1
解决办法
311
查看次数

C++ ofstream与C++ cout管道传输到文件

我正在编写一组单元测试,将计算出的值写入文件.每个测试产生一个方形矩阵,可以容纳50,000到500,000的双倍,我总共有128个测试用例组合.

编写cout语句然后将输出汇总到文件中是否有任何重大开销,或者我最好使用ofstream直接写入文件?

c++ cout ofstream

2
推荐指数
1
解决办法
1250
查看次数

关键部分中的C++异常处理(pthreads)

[编辑:(从评论中复制)事实证明,问题出在其他地方,但谢谢大家的意见.]

我有一个共享容器类,它使用一个互斥锁来锁定push()和pop()函数,因为我不想同时修改head和tail.这是代码:

int Queue::push( WorkUnit unit )
{
    pthread_mutex_lock( &_writeMutex );
    int errorCode = 0;

    try
    {
        _queue.push_back( unit );
    }
    catch( std::bad_alloc )
    {
        errorCode = 1;
    }

    pthread_mutex_unlock( &_writeMutex );

    return errorCode;
}
Run Code Online (Sandbox Code Playgroud)

当我在调试模式下运行它时,一切都很好.当我在发布模式下运行时,我大致在驱动程序开始推送和"同时"弹出时崩溃.如果try/catch块捕获到std :: bad_alloc异常,它会立即强制退出吗?如果是这样,我应该将函数的其余部分包含在finally块中吗?

此外,较慢的调试模式是否可能成功,因为我的push()和pop()调用从未实际发生过?

c++ mutex exception pthreads

2
推荐指数
2
解决办法
5101
查看次数