【问题解决记录】无法识别的标志“-sdlMode”,在“p2”中
本文为大便一箩筐的原创内容,转载请注明出处,谢谢: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”中的更多相关文章
- [企业化NET]Window Server 2008 R2[1]-服务器基本安装即问题解决记录
1. 服务器基本安装即问题解决记录 √ 2. SVN环境搭建和客户端使用 2.1 服务端 和 客户端 安装 √ 2.2 项目建立与基本使用 √ 2.3 基本冲突解决, ...
- u-boot从nand 启动时的问题解决记录
u-boot从nand 启动时的问题解决记录 问题描述: 使用u-boot-1.1.6版本u-boot移植到JZ2440开发板上,当前已经能够从Nor启动,但是不能从Nand正常启动(u-boot大小 ...
- Server2012多用户远程桌面及问题解决记录
1.开启远程桌面 转载自 https://jingyan.baidu.com/article/c275f6ba9321fda33c756712.html 2.添加用户 转载自 https://jin ...
- ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理
分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...
- 记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功
记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功 记录Spring Boot大坑一个,在bean中如果有@Test单元测试,不会注入成功 记录Spring Boo ...
- 《汇编语言(第三版)》pushf 和 popf 指令,以及标志寄存器在 Debug 中的表示
pushf 和 popf pushf 的功能是将标志寄存器的值压栈,而 popf 是从栈中弹出数据,输入标志寄存器. pushf 和 popf,为直接访问寄存器提供了方法. 格式 pushf popf ...
- Linux 系统运行着许多子系统和应用程序。您可以使用系统日志记录从启动时就收集有关运行中系统的数据。有时
概述 在本教程中,您将学习以下内容: 配置 syslog 守护程序 了解标准设施.优先级和操作 配置日志轮换 了解 rsyslog 和 syslog-ng 系统内部发生了什么 Linux 系统运行着许 ...
- python scikit-learn 环境搭建问题解决记录
之前一直用pycharm 里内置的pip进行python 包的安装,今天装scikit-learn时没报错,但是报scipy包不识别,pip下载也报错下载anaconda 集成插件,最终问题解决:参考 ...
- 一个项目中mysql数据库经常死锁的问题解决记录
1.问题描述 此项目为一个物流系统,需要使用PDA对货物进行入库.备货.出货等操作,在系统开发测试过程中,经常发现死锁问题. 有这样一种业务场景:仓库对备货单上货进行扫码备货后,点击"完成& ...
随机推荐
- 001-netty的优势
1.API简单. 2.性能高. 3.成熟稳定. 4.入门门槛低.
- 【转】阿里巴巴技术专家杨晓明:基于Hadoop技术进行地理空间分析
转自:http://www.csdn.net/article/2015-01-23/2823687-geographic-space-base-Hadoop [编者按]交通领域正产生着海量的车辆位置点 ...
- 【Maven】在intellij里,体验Maven
1:配置Maven 从官网下载,然后将bin目录添加到系统变量Path中, 在cmd窗口,输入mvn,有执行反馈即配置成功. 配置conf/settings.xml文件,指定仓库中心下载到本地的目录 ...
- ipython安装(python3.6.1)
之前一直是在Python2.7环境下装的ipython,今天想在Python3环境下安装,主要是为了方便测试,按tab键可以补全,显示导入模块的方法. 1.首先安装Python3.6.1 wget h ...
- Web服务器文件传输程序客户端程序实现
1. 客户端程序--主函数 客户端主程序的流程图如下: 主程序主要是分析输入的命令,根据不同命令调用不同的函数处理或者进行出错处理,函数代码如下: #include "common.h&qu ...
- WebService发布协议--SOAP和REST的区别
HTTP是标准超文本传输协议.使用对参数进行编码并将参数作为键值对传递,还使用关联的请求语义.每个协议都包含一系列HTTP请求标头及其他一些信息,定义客户端向服务器请求哪些内容,服务器用一系列HTTP ...
- Django学习笔记之Queryset详解
Django ORM用到三个类:Manager.QuerySet.Model.Manager定义表级方法(表级方法就是影响一条或多条记录的方法),我们可以以models.Manager为父类,定义自己 ...
- RabbitMQ学习之(三)_Centos6下RabbitMQ PHP扩展的安装
安装rabbitmq-c依赖包 yum install libtool autoconf 下载安装rabbitmq-c wget https://github.com/alanxz/rabbitmq- ...
- Clonal hematopoiesis of indeterminate potential(意义不明的克隆性造血)-CHIP
意义不明的克隆性造血是指由一个造血干细胞或者其他早期的起始血细胞为了更好的适应环境而发展成一个带有一些基因变异的亚型. 这个亚型带有基因变异一般是非驱动性的,而且该亚型占血细胞的比率跟年龄有很大的相关 ...
- JAVA链接数据库
链接:http://www.cnblogs.com/centor/p/6142775.html 开发工具: MyEclipse MySQL JDBC驱动:mysql-connector-java-5. ...