本文为大便一箩筐的原创内容,转载请注明出处,谢谢:http://www.cnblogs.com/dbylk/


这是本人第一次使用MarkDown编辑器,试试看效果—w—,下面是正文:


一、报错原因

昨天用SIMD指令编写了几个矩阵计算函数,想要替换掉DX的函数达到优化性能的目的。
因为公司项目使用的编译器是VS2008,而VS2013编译出来的SIMD指令效率优于VS2008,所以我便想在VS2008中使用VS2013编译的库,结果导入后链接过程报错:

fatal error C1007: 无法识别的标志“-sdlMode”,在“p2”中

在网上查询了一下,虽然没有找到直接的解决方案,不过大概知道了这是因为编译库文件的编译器版本不同导致的报错。

sdl是cl编译器的一个参数,具体可以查阅MSDN:
/sdl(启用附加安全检查)


而VS2008版本的编译器没有定义sdl参数,所以当使用VS2008链接VS2013编译的lib文件时,会导致链接失败

二、解决方案

方案一 使用VS2008把想要导入的库重新编译

这个方法简单直接,不过它违背了我最初使用这个库的初衷,所以直接Pass掉

方案二 修改VS2013的编译参数,重新编译想要导入的库

这个方案也很好理解,因为VS2008不能识别"/sdl"参数,所以在用VS2013编译库的时候把这个参数删掉就好了,具体操作方法如下:

项目 -> 属性 -> 配置属性 -> C/C++ -> 常规 -> SDL检查,删除此项参数,再重新编译即可

三、其他问题

“P1”和“P2”之间Il不匹配

解决了上述报错后,再重新用VS2008编译公司的项目,又有了新的报错:

“P1”和“P2”之间Il不匹配

这个问题产生的原因也是编译器版本不匹配导致的,网上相关的资料很多,在此就不废话了
解决方法也很简单:只需要在编译库的时候关闭编译器的“全程序优化”和“链接时代码生成”选项即可

warning C4099 找不到vc120.pdb,如同没有调试信息一样

这是一个链接警告,由于VS2008生成的调试文件为vc90.pdb,与VS2013的版本不符合,所以在VS2008中使用VS2013编译的lib文件会产生上述警告
解决方法是在库编译完后,将Release中间文件夹中的vc120.pdb拷贝出来,和lib文件放在同一目录导入到VS2008的工程中,或者直接放到VS2008工程的目标目录(即生成的exe所在目录),就不会产生上述警告了

编译Debug版本的exe后,程序打开时弹窗报错 R6034

这个错误产生的原因是因为debug版本使用了release版的lib文件,导致客户端使用了错误版本的CRT(C++ RunTime,C++运行时库),使用VS2013编译一个debug版本的lib,再导入到VS2008的工程即可

【问题解决记录】无法识别的标志“-sdlMode”,在“p2”中的更多相关文章

  1. [企业化NET]Window Server 2008 R2[1]-服务器基本安装即问题解决记录

    1.  服务器基本安装即问题解决记录      √ 2.  SVN环境搭建和客户端使用 2.1  服务端 和 客户端 安装    √ 2.2  项目建立与基本使用     √ 2.3  基本冲突解决, ...

  2. u-boot从nand 启动时的问题解决记录

    u-boot从nand 启动时的问题解决记录 问题描述: 使用u-boot-1.1.6版本u-boot移植到JZ2440开发板上,当前已经能够从Nor启动,但是不能从Nand正常启动(u-boot大小 ...

  3. Server2012多用户远程桌面及问题解决记录

    1.开启远程桌面 转载自  https://jingyan.baidu.com/article/c275f6ba9321fda33c756712.html 2.添加用户 转载自 https://jin ...

  4. ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理

    分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...

  5. 记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功

    记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功 记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功 记录Spring Boo ...

  6. 《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示

    pushf 和 popf pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,输入标志寄存器. pushf 和 popf,为直接访问寄存器提供了方法. 格式 pushf popf ...

  7. Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时

    概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...

  8. python scikit-learn 环境搭建问题解决记录

    之前一直用pycharm 里内置的pip进行python 包的安装,今天装scikit-learn时没报错,但是报scipy包不识别,pip下载也报错下载anaconda 集成插件,最终问题解决:参考 ...

  9. 一个项目中mysql数据库经常死锁的问题解决记录

    1.问题描述 此项目为一个物流系统,需要使用PDA对货物进行入库.备货.出货等操作,在系统开发测试过程中,经常发现死锁问题. 有这样一种业务场景:仓库对备货单上货进行扫码备货后,点击"完成& ...

随机推荐

  1. POJ - 3648 Wedding (2-SAT 输出解决方案)

    题意:有N-1对夫妇和1对新郎新娘要出席婚礼,这N对人要坐在走廊两侧.要求每对夫妇要坐在不同侧.有M对人有通奸关系,对于这一对人,不能同时坐在新娘对面(新娘新郎也可能和别人有通奸关系).求如何避免冲突 ...

  2. Cloudera Manager安装之时间服务器和时间客户端(二)

    福利 => 每天都推送 欢迎大家,关注微信扫码并加入我的4个微信公众号:   大数据躺过的坑      Java从入门到架构师      人工智能躺过的坑         Java全栈大联盟   ...

  3. [Deep Learning]学习资料积累

    1. ufldl教程√ Andrew Ng的教程,matlab代码. 2. Neural Network and Deep Learning√: 一本未写完的书,非常细致,对基础的概念比如cross ...

  4. CSS 图片廊

    CSS 图片廊 一.示例一 代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" ...

  5. 20145321 《Java程序设计》第一周学习总结

    20145321 <Java程序设计>第1周学习总结 教材学习内容总结 第一章 1.三大平台:Java SE.Java EE .Java ME 2.Java SE:由JVM.JRE.JDK ...

  6. 20145331《Java程序设计》课程总结

    20145331<Java程序设计>课程总结 每周读书笔记链接汇总 •20145331<Java程序设计>第一周学习总结 •20145331<Java程序设计>第二 ...

  7. 20145331实验四 "Android开发基础"

    20145331实验四 "Android开发基础" 程序设计过程 实验内容 ·安装Android Studio ·运行安卓AVD模拟器 ·使用安卓运行出虚拟手机并显示HelloWo ...

  8. 从零开始玩转JMX(四)——Apache Commons Modeler & Dynamic MBean

    Apache Commons Modeler 前面的Model MBean的创建方式看上去特别复杂,一个简单功能的类ModelMBeanUtils 写了很多代码,那有木有简单点的方式呢,答案是肯定的, ...

  9. Pandas 高级应用 数据分析

    深入pandas 数据处理 三个阶段 数据准备 数据转化 数据聚合 数据准备 加载 组装 合并 - pandas.merge() 拼接 - pandas.concat() 组合 - pandas.Da ...

  10. 2017 beijing icpc E - Rikka with Competition

    2017-09-22 22:01:19 writer:pprp As we know, Rikka is poor at math. Yuta is worrying about this situa ...