本文为大便一箩筐的原创内容,转载请注明出处,谢谢: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. 错误:程序“XXX”不包含适合于入口点的静态“Main”方法

    解决办法: 1.右键类库属性 2.将输出类型改为“类库”

  2. DevStore教你如何玩转饥饿营销?

    首先我们必需知道: 所谓“饥饿营销”,是指商品提供者有意调低产量,以期达到调控供求关系.制造供不应求“假象”.维持商品较高售价和利润率的目的. 饥饿营销”营销方式,其通常的步骤: 1.引起关注.首先是 ...

  3. 如何使用iClap进行产品管理?

    iClap概述: iClap是DevStore的全新产品,于2015年8月29号上线,该款产品专注于为移动互联网企业提供企业规范化解决方案,颠覆传统的产品管理模式,实现产品管理场景化.APP.甚至原型 ...

  4. LightOJ - 1074 Extended Traffic (SPFA+负环)

    题意:N个点,分别有属于自己的N个busyness(简称b),两点间若有边,则边权为(ub-vb)^3.Q个查询,问从点1到该点的距离为多少. 分析:既然是差的三次方,那么可能有负边权的存在,自然有可 ...

  5. win10+eclipse+hadoop2.7.2+maven+local模式直接通过Run as Java Application运行wordcount

    一.准备工作 (1)Hadoop2.7.2 在linux部署完毕,成功启动dfs和yarn,通过jps查看,进程都存在 (2)安装maven 二.最终效果 在windows系统中,直接通过Run as ...

  6. Method Swizzling 剖析

    一.背景介绍 关于Method Swizzling的文章一大堆,讲的非常好的也数不胜数.不过,很多人只是会用,知道一些注意点.深入一点问的话,估计就答得不好.归其原因就是对Method Swizzli ...

  7. Ubuntu16.04安装印象笔记

    Nixnote 是一个 Evernote 开源客户端,原名 Nevernote.Evernote 是一个著名的笔记等个人资料整理和同步软件, 因为 Evernote 没有 Linux 下的官方版本,因 ...

  8. selenium 之定位方法

    1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium i ...

  9. C/C++:函数的编译方式与调用约定以及extern “C”的使用

    转自:https://www.cnblogs.com/qinfengxiaoyue/archive/2013/02/04/2891908.html 函数在C++编译方式与C编译方式下的主要不同在于:由 ...

  10. 【c++ primer, 5e】【try语句块】

    p172~p177:c++的try语句块和异常处理: 1.通常,与用户交互的代码和对象相加(底层的代码)是分离开的,异常由与用户交互的代码处理(底层代码抛出异常就可以了). 2.C++的runtime ...