[英]Cygwin compiling error: “this application has requested the runtime to terminate it in an unusual way”
[英]MinGW - Application terminates in unusual way (after finishing) once a .dll was loaded
使用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
该应用程序可以正常运行,并且可以完成预期的工作,但是一旦程序完成执行并从main方法返回,我将收到以下消息:
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”的二进制文件时,它不会崩溃。
我见过类似的东西,之前曾报道过: http : //thread.gmane.org/gmane.comp.gnu.mingw.user/41724
这是否适用于您的情况? 特别是: http : //thread.gmane.org/gmane.comp.gnu.mingw.user/41724/focus=41738
及其后续行动?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.