Windows MinGW-应用程序在加载.dll后以异常方式终止(完成后)

Windows MinGW-应用程序在加载.dll后以异常方式终止(完成后),windows,gcc,cygwin,mingw,Windows,Gcc,Cygwin,Mingw,在使用Cygwin的MinGW进行编译时,我在Windows上动态加载共享库时遇到问题 该应用程序由6部分组成:2个静态库、3个共享库和1个使用静态库并在运行时加载共享库的可执行文件 我正在Cygwin中使用i686-pc-mingw32-g++。所有源文件都使用-std=c++11标志编译,并按如下方式链接: Static libraries: i686-pc-mingw32-ar rcs libxxx.a bin/*.o i686-pc-mingw32-ar rcs libyyy

在使用Cygwin的MinGW进行编译时,我在Windows上动态加载共享库时遇到问题

该应用程序由6部分组成:2个静态库、3个共享库和1个使用静态库并在运行时加载共享库的可执行文件

我正在Cygwin中使用
i686-pc-mingw32-g++
。所有源文件都使用
-std=c++11
标志编译,并按如下方式链接:

Static libraries:
   i686-pc-mingw32-ar rcs libxxx.a bin/*.o
   i686-pc-mingw32-ar rcs libyyy.a bin/*.o

Each shared library:
   i686-pc-mingw32-g++ -fPIC -shared -o ###.dll bin/*.o -lxxx -L../xxx -lyyy -L../yyy

Executable:
   i686-pc-mingw32-g++ -o program.exe bin/*.o -lxxx -L../xxx -lyyy -L../yyy -static
应用程序运行良好,并按预期执行,但一旦程序完成执行并从主方法返回,我会收到以下消息:

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
这只发生在我加载一个共享库时;如果我没有,应用程序将在没有消息的情况下终止

我怀疑这个程序与Windows的LoadLibrary有关;在从main返回之前,我还尝试手动释放每个库,但同样的问题也发生了

注意:当使用Cygwin的GCC使用相同的代码进行编译时,消息不会出现,并且一切正常

非常感谢您的帮助


编辑:发现了另一件事:当我链接不带“-static”的二进制文件时,它不会崩溃。

我以前看到过类似的情况:

这是否适用于您的情况?特别地:


及其后续工作?

在项目属性>C/C++构建>环境下定义TMP环境变量


要归功于

当“mingw”在命令行中时,我对您在“Cygwin”中编写感到困惑。@Technophile,正如我上面所写的。MinGW在Cygwin中作为软件包提供。抱歉,错过了。我用的是MinGW64。