警告较为简单,主要是使用了原来RTL中字符串处理函数如strcpy等现在被认为不安全的函数造成的。
而错误就让人纳闷了,该错误为:
mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "./Release/jiaoshi.exe". f
而错误就让人纳闷了,该错误为:
mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file "./Release/jiaoshi.exe". f
其最终原因已查明见最后一部分
上网找了一下,只有英文网页有相关讨论,懒得去翻译了。中文网页中倒是有一个,而且有解决办法,那就是在项目属性——配置属性——链接器——清单文件中, 把生成清单改成否就行了。
经过进一步的探索,发现在项目属性——配置属性——清单工具——输入和输出中,把嵌入清单改成否也行。
然而,问题虽然解决了,原因却还不明。因为,既然生成清单和嵌入清单是微软的默认设置,为什么却会出现错误呢?第一种方法的作者认为清单是.net程序 (托管程序)需要的,所以去掉后便能正常生成了,然而后一种方法仍然生成了清单,而且也能正常运行又作何解,而且微软的说明中也没有提到清单只是为CLR 程序准备的,而是应该所有程序都要加上清单。
更新:还有一种更简单的方法:如果编译前将所有打开的与该项目有关的文件都关掉,也可以解决问题。
最终原因已查明
由于VC需要把生成的文件中嵌入MANIFEST文件,而由于杀毒软件之类的会握有这个文件句柄(因为杀毒软件
发现这个EXE,DLL正在读写),于是VC就写不进去了,方法是暂时关闭杀毒软件,这样就不用
改写MANIFECT
我用的是瑞星杀毒软件,有这个问题.
上网找了一下,只有英文网页有相关讨论,懒得去翻译了。中文网页中倒是有一个,而且有解决办法,那就是在项目属性——配置属性——链接器——清单文件中, 把生成清单改成否就行了。
经过进一步的探索,发现在项目属性——配置属性——清单工具——输入和输出中,把嵌入清单改成否也行。
然而,问题虽然解决了,原因却还不明。因为,既然生成清单和嵌入清单是微软的默认设置,为什么却会出现错误呢?第一种方法的作者认为清单是.net程序 (托管程序)需要的,所以去掉后便能正常生成了,然而后一种方法仍然生成了清单,而且也能正常运行又作何解,而且微软的说明中也没有提到清单只是为CLR 程序准备的,而是应该所有程序都要加上清单。
更新:还有一种更简单的方法:如果编译前将所有打开的与该项目有关的文件都关掉,也可以解决问题。
最终原因已查明
由于VC需要把生成的文件中嵌入MANIFEST文件,而由于杀毒软件之类的会握有这个文件句柄(因为杀毒软件
发现这个EXE,DLL正在读写),于是VC就写不进去了,方法是暂时关闭杀毒软件,这样就不用
改写MANIFECT
我用的是瑞星杀毒软件,有这个问题.