的情况很简单,但奇怪。当我编译没有LinearAlgebra.o源代码(需要链接到LAPACK)的程序时,会捕获并处理C++异常。当我不包含该编译单元但仍链接到库(-llapack -lblas
)时,会捕获并处理异常。但是,一旦我得到它(它的代码运行得很好),C++异常不再被正确处理,并且我得到了Windows崩溃处理程序“程序已停止响应总部报告”废话。MinGW的:与LAPACK链接和BLAS使C++异常成为未处理
Here我阐明这是什么源文件内部发生的光。我确实保持它非常简单,但我不确定它是否真的是犹太洁食。
我怀疑这是一些关于调用导致C++异常停止工作FORTRAN程序。但我不知道如何去解决这个问题。
UPDATE:
我很高兴找到了针对此问题的临时解决方法:我使用的MinGW的gfortran
编译器直接编译我目前使用的LAPACK和BLAS例程。
将这些目标文件链接到我的C++项目中使用-lgfortran
与g++
完美地工作,我的例外仍然正确处理!作为一个奖励,这允许我只包含我打算使用的LAPACK例程,所以现在我不再需要链接一个〜4MB的库。
编辑:我想如果我静态链接它只是“抓住它所需要的”一库所以它是4MB不会在这种情况下,无所谓。
通常,fortran代码应该使用'gfortran'前端进行编译。它将适当的标志添加到使用'gcc'的编译器中,而语言自动发现功能不会。您可以使用verbose选项'-v'检查编译时使用的确切参数。 – rodrigo 2011-12-27 21:19:19