怎样解决vs2013解决方案模块对于SAFESEH 映像是不安全的

怎样解决VS2013模块对于SAFESEH 映像是不安全的_百度知道
怎样解决VS2013模块对于SAFESEH 映像是不安全的
提问者采纳
今天在使用VS2013编译一个控制台应用程序时出现了:error LNK2026 模块对于 SAFESEH 映像是不安全的,按照以下步骤轻松解决了。工具/原料VS2013方法/步骤打开该项目的“属性页”对话框,会出现如下界面然后单击“链接器”--“命令行”,出现如下界面将 /SAFESEH:NO 复制到“其它选项(D)”框中,然后点击应用最终通过编译并且运行成功
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free.
Compiling libffi with VS11 gives the following linker error
libffi\libffi-3.0.9\ms\Win32\Debug\ffi.dll : fatal error LNK1281: Unable to generate SAFESEH image.
The same project was compiling fine with VS10, but after an auto upgrade with VS2012, it started giving linker error
The Explanation in
is too cryptic and least helpful
I might rebuild with /SAFESEH:NO , but I am unsure of the implication.
Please advise what might go wrong.
32.1k34097
The main implication of not having SAFESEH is that your application won't be accepted for the Windows 8 store, or for . If that's not an issue for you then feel free to use /SAFESEH:NO.
The most common reason for the linker not to be able to produce an image is because one or more of the input files (modules) to the linker was not compatible with the safe exception handlers feature. A common reason for a module to not be compatible with safe exception handlers is because it was created with a compiler from a previous version of Visual C++.
Is it possible that the project upgrade to VS2012 changed the setting to /SAFESEH:YES. Perhaps you've never been building with SAFESEH.
375k23491810
Your Answer
Sign up or
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Post as a guest
By posting your answer, you agree to the
Not the answer you're looking for?
Browse other questions tagged
Stack Overflow works best with JavaScript enabled查看: 4512|回复: 12
在线时间8 小时最后登录浮云11 萌币41 妹抖0 注册时间阅读权限5帖子好友主题精华0积分28UID264073
萌动会员, 积分 28, 距离下一级还需 22 积分
妹抖0 萌币41 帖子
本帖最后由 kaienfr 于
22:55 编辑
今天尝试使用VS2013编译NGE2。因为是第一次使用这个库,所以走了些弯路,这里和大家分享一下操作流程,顺便解答一些可能遇到的各种问题。
1. 下载NGE2源码
可以参考 的教程
下载地址: /ifreedom/libnge2
2. 下载Win32Depends和res
下载 /downloads/ifreedom/libnge2/Win32Depends.7z 解压到libnge2的根目录下。
下载例子的资源文件 /downloads/ifreedom/libnge2/res.7z&&解压放到samples目录下。
以上引用前面的教程地址。
3. 下载libjpeg源码
网址 http://www.ijg.org 代码包地址: http://www.ijg.org/files/jpegsr9a.zip
因为win32Depends.7z包里提供的libjpeg不能在VS2013上使用,所以我们需要重新编译一份。
以上三步就把所需的代码全部准备完毕了。 下面是配置和编译代码
4. 编译libjpeg
解压缩jpegsr9a.zip。打开VS2013的命令行: VS2013 x86 本机工具命令提示 , 然后CD到解压出来的jpeg-9a目录下。输入命令:copy makefile.vc makefile复制代码用记事本打开makefile文件,修改!include &win32.mak&复制代码为!include &C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\win32.mak&复制代码这个路径C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\win32.mak要根据你的Microsoft sdk版本而定,可以到C:\Program Files (x86)\Microsoft SDKs\Windows\ 路径下观察一下win32.mak文件的具体位置,然后修改成你的地址。这里一定要修改,否则VS2013无法识别win32.mak文件路径。
改好并保存后。输入命令nmake setup-v10复制代码生成VS的项目文件。最后打开项目jpeg.sln编译即可。
PS: 默认设置编译出来的是release版的静态库jpeg.lib,改名称libjpeg.lib并替换Win32Depends\lib下的同名文件。
我们还可以制作一份动态dll库。方法是:
在jpeg的项目属性里设置,把 目标文件扩展名 和 配置类型 都改为.dll即可。编译出来的就是jpeg.dll文件。然后把这个dll文件复制替换掉Win32Depends\bin的同名文件。
这样libjpeg库的编译和更新工作就完成了。 下面就是我们的最终目标 NGE2库的编译了。
5. Cmake制作VS2013的NGE2项目文件
到cmake的官网http://www.cmake.org/下载最新的cmake, 地址: http://www.cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.zip
解压缩并运行bin目录下的cmake-gui.exe,然后按步骤操作:
1. where is the source code 处填写 你的libnge2的路径
2. where is build the binaries&&处填写 你的libnge2的路径/VSBuild
3. 点击Configure按钮,点YES, 然后选择Visual Studio 12 和 use default native compilers. 最后点击Finish按钮。
4. 稍等片刻,等配置成功完成显示Configuring done后,点击Generate按钮。
这样我们的项目文件配置就在VSBuild目录下生成了。
PS: 这里我们可以在Configure完成后,点选BUILD下的BUILD_SHARED 配置项目生成动态的dll库,再点击Generate.
当然这个完全可以在VS的项目属性里修改。后面会再次提到。
6. 编译 NGE2
进入VSBuild目录,打开VS2013的项目文件NGE2.sln。我们以点选了BUILD_SHARED的情况为例。
在项目nge2上点击鼠标右键选择属性,连接器,高级 中 设置&影像具有安全异常处理程序&为/SAFESEH:NO
上面这一步很重要,否则就会出现大量的错误信息如:。。。。。。
1&unzip.lib(unzip.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1&unzip.lib(ioapi.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1&libcoolaudio.lib(libmpg123.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1&libcoolaudio.lib(vorbisfile.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
1&libcoolaudio.lib(optimize.obj) : error LNK2026: 模块对于 SAFESEH 映像是不安全的。
。。。。。。复制代码然后按F7生成项目。
按照前面的操作步骤,一切顺利的话,项目就编译成功了========== 生成:&&成功 17 个,失败 0 个,最新 1 个,跳过 1 个 ==========复制代码Debug模式下生成NEG2_d.dll和NEG2_main_d.lib两个库文件,在目录VSBuild/Debug中。
相对的Release模式生成的库NEG2.dll和NEG2_main.lib在目录VSBuild/Release中。
如需制作静态lib库。可以参考第4步编译libjpeg静态库的设置方法, 在项目nge2上点击鼠标右键选择&属性&,把 目标文件扩展名 和 配置类型 都改为.lib。然后在项目nge2上点击鼠标右键选择&生成&。就会得到静态版的nge2.lib文件。
PS: 值得一提的是,印象里貌似还有两处代码错误,是demo测试程序里的两个int函数没有返回值 (记不清是哪个文件了,好像一个是init函数一个是fini函数 (git里看了一下,确定是demo16),这个自己在函数后面添加一句 return 0; 即可),可能因为下的是Develop版的原因吧,Master版没有测试不知道是否有同样的问题。不过这对编译NGE2库文件没有影响。你也可以单独编译库文件使用。
基本上各方面都说到了。至于如何在自己的项目里使用库文件,请参阅@newcreat 的教程贴
二楼。当然也可以看看项目里的demo例程的配置方法。
Q1: 运行Demo闪退
A1: 经过调试Demo10发现,闪退的原因是NGE2库中的mge_jpg.c 文件调用jpeg_create_decompress(&cinfo);复制代码时出现的问题。进一步分析原因是版本参数没有给出,该函数认为版本过低不匹配而退出程序。修正代码如下jpeg_create_decompress(&cinfo,JPEG_LIB_VERSION);复制代码重新编译NGE2库,再调用即可。
建议: 把Win32Depends\include 目录下libjpeg的相关h文件: jconfig.h, jerror.h, jmorecfg.h, jpeglib.h 替换成新版本文件。
就写到这里吧,祝大家一切顺利!
在线时间2564 小时最后登录浮云9410 萌币46126 妹抖376 注册时间阅读权限80帖子好友主题精华0积分30879UID168689
妹抖376 萌币46126 帖子
技术大神啊。。。
在线时间353 小时最后登录浮云2427 萌币6558 妹抖10 注册时间阅读权限50帖子好友主题精华0积分4439UID101080
(鬼畜。。才怪)萌萌的吐槽喵。。(小幽)
银牌会员, 积分 4439, 距离下一级还需 1561 积分
妹抖10 萌币6558 帖子
啊。。。呜呜呜呜。。与楼上同感喵
好冰。。暖暖在吃喵
在线时间543 小时最后登录浮云221 萌币2018 妹抖3 注册时间阅读权限30帖子好友主题精华0积分1358UID102846
铜牌会员, 积分 1358, 距离下一级还需 1642 积分
妹抖3 萌币2018 帖子
我去看看LZ提到的错误....
在线时间543 小时最后登录浮云221 萌币2018 妹抖3 注册时间阅读权限30帖子好友主题精华0积分1358UID102846
铜牌会员, 积分 1358, 距离下一级还需 1642 积分
妹抖3 萌币2018 帖子
做了一个新的dependency package
暂时没动nge_load_jpeg_buf
LZ可以试一下...
safeseh那个的话...我加到cmake里面试试...
在线时间543 小时最后登录浮云221 萌币2018 妹抖3 注册时间阅读权限30帖子好友主题精华0积分1358UID102846
铜牌会员, 积分 1358, 距离下一级还需 1642 积分
妹抖3 萌币2018 帖子
用现在的develop head
和LS附的depends
可以在VS2012里直接build通过...唯一的问题是demo15好像执行有问题...
VS2013可以试一试...
在线时间8 小时最后登录浮云11 萌币41 妹抖0 注册时间阅读权限5帖子好友主题精华0积分28UID264073
萌动会员, 积分 28, 距离下一级还需 22 积分
妹抖0 萌币41 帖子
本帖最后由 kaienfr 于
15:38 编辑
试了下,更新过的Win32Depends已经可以使用了。
/SAFESEH:NO 和demo16 今天的更新内容在git上已经看到了,应该没问题。Nice job!
PS: libcoolaudio的源码你那里有吗,能分享一份吗?
在线时间543 小时最后登录浮云221 萌币2018 妹抖3 注册时间阅读权限30帖子好友主题精华0积分1358UID102846
铜牌会员, 积分 1358, 距离下一级还需 1642 积分
妹抖3 萌币2018 帖子
kaienfr 发表于
试了下,更新过的Win32Depends已经可以使用了。
/SAFESEH:NO 和demo16 今天的更新内容在git上已经看到了, ...
根下的coolaudio目录里就是...
在线时间8 小时最后登录浮云11 萌币41 妹抖0 注册时间阅读权限5帖子好友主题精华0积分28UID264073
萌动会员, 积分 28, 距离下一级还需 22 积分
妹抖0 萌币41 帖子
本帖最后由 kaienfr 于
23:06 编辑
jeff126 发表于
根下的coolaudio目录里就是...
这个看到的,cmake生成NGE2的VS项目里也有一个文件夹,但是项目打开来是空的。所以以为是不是代码不全。一会在coolaudio里面直接cmake试试看。
在线时间8 小时最后登录浮云11 萌币41 妹抖0 注册时间阅读权限5帖子好友主题精华0积分28UID264073
萌动会员, 积分 28, 距离下一级还需 22 积分
妹抖0 萌币41 帖子
本帖最后由 kaienfr 于
20:02 编辑
刚才试了下cmake出来的coolaudio果然还是空的,能提供一份能用的cmakelist或者VS的项目文件?
刚才顺便看了下Makefile_lib, 编译这个库还要pspsdk. 能说下编译的具体流程吗?
在线时间8 小时最后登录浮云11 萌币41 妹抖0 注册时间阅读权限5帖子好友主题精华0积分28UID264073
萌动会员, 积分 28, 距离下一级还需 22 积分
妹抖0 萌币41 帖子
本帖最后由 kaienfr 于
23:11 编辑
我在http://sourceforge.net/projects/minpspw/ 下了个pspsdk, 安装后发现里面有toolchain包含make, psp-g++等命令,貌似足够编译libcoolaudio. 所以做了如下尝试。
在coolaudio目录下开一个cmd,输入命令copy makefile_lib makefile
复制代码然后打开makefile文件,参考Cmakelist,补上include设置INCDIR = . ../and_jni_base ../include复制代码最后在命令行输入vsmake复制代码顺利的编译出了 libcoolaudio.a, 就是不知道这个lib能不能在VC上调用了。比起Win32Dependency里提供的lib文件1.8M, 这个库文件只有50KB...
能否调用我一会试下,不过很怀疑能用,因为记得以前Mingw-gcc编译的库就无法在VS上调用,如果你有VS上编译的方法还请分享下 多谢!&&
在线时间8 小时最后登录浮云11 萌币41 妹抖0 注册时间阅读权限5帖子好友主题精华0积分28UID264073
萌动会员, 积分 28, 距离下一级还需 22 积分
妹抖0 萌币41 帖子
果然这个库文件在VS上用不了1&nge.obj : error LNK2001: 无法解析的外部符号 _CoolAudioDefaultInit
1&nge.obj : error LNK2001: 无法解析的外部符号 _CoolAudioDefaultFini
1&nge.obj : error LNK2001: 无法解析的外部符号 _CreateMp3Player
1&nge.obj : error LNK2001: 无法解析的外部符号 _CreateWavPlayer
1&nge.obj : error LNK2001: 无法解析的外部符号 _CreateOggPlayer复制代码回到原点,如何编译出lib文件来?
在线时间543 小时最后登录浮云221 萌币2018 妹抖3 注册时间阅读权限30帖子好友主题精华0积分1358UID102846
铜牌会员, 积分 1358, 距离下一级还需 1642 积分
妹抖3 萌币2018 帖子
kaienfr 发表于
果然这个库文件在VS上用不了回到原点,如何编译出lib文件来?
看了看确实源码不全....这时候就只能@newcreate了...
Powered by怎样解决VS2013模块对于SAFESEH 映像是不安全的_百度知道
怎样解决VS2013模块对于SAFESEH 映像是不安全的
提问者采纳
在使用VS2013编译一个控制台应用程序时出现了:error LNK2026 模块对于 SAFESEH 映像是不安全的,按照以下步骤轻松解决了。具体步骤参考如下
网络工程师
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁怎样解决VS2013模块对于SAFESEH 映像是不安全的_百度知道
怎样解决VS2013模块对于SAFESEH 映像是不安全的
提问者采纳
1  打开该项目的“属性页”对话框,会出现如下界面  2  然后单击“链接器”--“命令行”,出现如下界面  3  将 /SAFESEH:NO 复制到“其它选项(D  最终通过编译并且运行成功
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 vs2013 创建解决方案 的文章

 

随机推荐