3

如果我尝试编译代码

  #include "armadillo"

  int main(int argc, char *argv[]) {
  }

使用 MinGW g++ 和最新的犰狳(3.6.1),它在我的 windows XP 上运行良好,但如果我编译它并在 windows 7 上运行它,我会得到:“一个问题导致程序停止正常工作。”

什么可能导致这种情况?

我已经尝试过 4.6.2 和 4.7.2(下一个包含最新的 g++ -v):

使用内置规范。COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/4.7.2/lto-wrapper.exe 目标:mingw32 配置:../gcc-4.7.2/configure --enable-语言=c,c++,ada,fortran,obj c,obj-c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgo mp --disable-win32-registry --enable- libstdcxx-debug --disable-build-poststage1- with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw 线程模型:win32 gcc 版本 4.7.2 (GCC)

请注意,在这个阶段,我什至没有链接任何像 LAPACK 这样的库。我也试过取消注释

//#define ARMA_USE_LAPACK

在 config.cpp 中,但没有效果。顺便说一句,我可以在没有犰狳的情况下编译 c 代码,这在两个系统上都没有问题。只有添加犰狳才会引起问题。

更新:如果我按 ctrl-c 我得到:

forrtl:错误(200):由于 control-C 事件而导致程序中止图像
PC 例程行源 lapack_win32_MT.d 103A49EA Unknown Unknown Unknown lapack_win32_MT.d 1034CD0E Unknown Unknown Unknown lapack_win32_MT.d 1035B254 Unknown Unknown Unknown kernel32.dll
755B6C19 Unknown Unknown Unknown kernel32。 dll
75513677 Unknown Unknown Unknown ntdll.dll
77DFC002 Unknown Unknown Unknown ntdll.dll
77DFBFD5 Unknown Unknown Unknown

更新:在另一个 Windows 7 系统上,我确实设法执行,但在编译时收到以下消息(编译犰狳包中的 example2.cpp 时):

Info: resolving vtable for std::exception by linking to __imp___ZTVSt9exception (auto-import)
Info: resolving vtable for std::bad_alloc by linking to __imp___ZTVSt9bad_alloc (auto-import)
Info: resolving std::cout  by linking to __imp___ZSt4cout (auto-import)
Info: resolving std::nothrow  by linking to __imp___ZSt7nothrow (auto-import)
Info: resolving vtable for __cxxabiv1::__si_class_type_info by linking to __imp___ZTVN10__cxxabiv120__si_class_type_infoE (auto-import)
Info: resolving vtable for __cxxabiv1::__class_type_info by linking to __imp___ZTVN10__cxxabiv117__class_type_infoE (auto-import)
c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: warning: auto-importing has been activated without --enable-auto-import specified on the command line.
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.

谢谢。

4

0 回答 0