今天好奇就把OpenSees的源代码下载下来,编译了一下,看看能不能也编译出一个像样的exe程序,但是不用想都知道,肯定是失败了,毕竟程序那么复杂,所涉及的模块也是非常的多,肯定不是轻轻一点编译就能运行的,但是还是略有一点收获。
主要是在编译器链接的过程中出现了”Error lnk2026: module unsafe for safeseh image”的问题,翻译成中文就是”链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的”,这个问题,我去百度了一下,发现好像在VS2012之后是普遍存在的,需要进行一下设置,具体解决方法如下:
在项目的“属性页”中找到“链接器”标签,然后点击“命令行”将/SAFESEH:NO添加到“附加选项”的框中,点击应用即可。
具体的原因,在国内基本上是找不到的,我去国外的网站上找了一下,发现具体的原因如下:
This happens when you link an .obj or .lib that contains code created by an earlier version of the compiler. Which of course would be common if you downloaded a binary for opencv_ffmpeg instead of the source. You can turn the linker option off but then you’ll still have a CRT version incompatibility that can byte. Rebuild the library from source. – Hans Passant May 15 at 13:01
大致的原因就是在链接.lib和.obj文件的时候,由于文件是采用的旧版本的编译器生成,导致一些协调性的问题。
在stackoverflow上,还有另外的解决办法,如下所示:
1 2 3 4 5 |
Right-click on your project -> Properties -> Configuration Properties -> Linker -> Advanced and changed "Image Has Safe Exception Handlers" to "No (/SAFESEH:NO)" |
这个也是一个解决的办法,请大家自行对照英文进行修改,程序员应该懂英文的吧,不懂英文也用不到VS2013了。