LNK2005:_wmemcmp 重复定义,及C4799:没有EMMS指令
来源:互联网 发布:厦门关键词优化 编辑:程序博客网 时间:2024/06/05 06:14
最近在ARM平台上做一个C++项目,其中有一部分与硬件关系不大,想用Visual C++ 2010来做单步调试平台来提高开发效率,将Ubuntu的/usr/include中的所有头文件搞到了Windows的目录中,然后禁用或修改了其中与Linux特性相关的部分,编译了一个测试用例并调试成功,于是推而广之,此时,悲剧发生鸟。
...
2>xxx.obj : error LNK2005: _wmemcmp 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: _wmemcpy 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: _wmemmove 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: _wmemset 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: __mm_cvtpi32x2_ps 已经在 aa.obj 中定义
...
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(386): warning C4799: 函数“_mm_cvtpi16_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(405): warning C4799: 函数“_mm_cvtpu16_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(436): warning C4799: 函数“_mm_cvtpi8_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(451): warning C4799: 函数“_mm_cvtpu8_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(481): warning C4799: 函数“_mm_cvtpi32x2_ps”没有 EMMS 指令
...
参考网上的做法,链接器先上了/FORCE:MULTIPLE大餐,解决了_wmemcmp已经在aa.obj中定义之类的错误。然而,很不甘心呐,测试用例没有这样的错误啊,为什么啊?……
好奇心驱使下,祭出代码逐段注释大法,一段一段注释掉头文件,最后发现禁止#include <unistd.h>时没有问题,呵呵,以为找到了恶作剧的小精灵。悲哀地是,
添加如下代码,
#ifndef WIN32
#include <unistd.h>
#endif
仅仅解决了LNK2005:_wmemcmp 重复定义的问题,“没有EMMS指令”的链接警告依旧。行百里者九十,咱耗上了,继续……
若干次测试之后,发现如下解决方案:
#ifdef WIN32
#include <memory>
#include <WinSock2.h>
#include <Windows.h>
#endif
编译,输出窗口干干净净 ^-^
...
2>xxx.obj : error LNK2005: _wmemcmp 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: _wmemcpy 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: _wmemmove 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: _wmemset 已经在 aa.obj 中定义
2>xxx.obj : error LNK2005: __mm_cvtpi32x2_ps 已经在 aa.obj 中定义
...
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(386): warning C4799: 函数“_mm_cvtpi16_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(405): warning C4799: 函数“_mm_cvtpu16_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(436): warning C4799: 函数“_mm_cvtpi8_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(451): warning C4799: 函数“_mm_cvtpu8_ps”没有 EMMS 指令
3>c:\program files\microsoft visual studio 10.0\vc\include\xmmintrin.h(481): warning C4799: 函数“_mm_cvtpi32x2_ps”没有 EMMS 指令
...
参考网上的做法,链接器先上了/FORCE:MULTIPLE大餐,解决了_wmemcmp已经在aa.obj中定义之类的错误。然而,很不甘心呐,测试用例没有这样的错误啊,为什么啊?……
好奇心驱使下,祭出代码逐段注释大法,一段一段注释掉头文件,最后发现禁止#include <unistd.h>时没有问题,呵呵,以为找到了恶作剧的小精灵。悲哀地是,
添加如下代码,
#ifndef WIN32
#include <unistd.h>
#endif
仅仅解决了LNK2005:_wmemcmp 重复定义的问题,“没有EMMS指令”的链接警告依旧。行百里者九十,咱耗上了,继续……
若干次测试之后,发现如下解决方案:
#ifdef WIN32
#include <memory>
#include <WinSock2.h>
#include <Windows.h>
#endif
编译,输出窗口干干净净 ^-^
0 0
- LNK2005:_wmemcmp 重复定义,及C4799:没有EMMS指令
- emms指令在MMX指令中的作用
- LNK2005错误——重复定义错误
- LNK2005错误——重复定义错误
- LNK2005错误——重复定义错误
- .net中error LNK2005: MSVCRTD.lib重复定义问题
- .net中error LNK2005: MSVCRTD.lib重复定义问题
- C++为什么没有重复定义错误?
- vue指令的定义及常用指令
- 编程中经常能遇到LNK2005错误——重复定义错误
- LNK2005符号重定义问题
- error LNK2005重定义解决方法
- LNK2005 产生原因及解决方法
- CSDN重复提交BUG及点击删除没有反应
- LNK2005“符号已定义”错误解决方法
- LNK2005 *** 已经在 *** lib中定义.
- LNK2005"符号已定义"的链接错误
- error LNK2005 已经在***.obj中定义
- LeetCode第二关:Add Two Numbers --> Difficulty: Medium
- request请求
- JSP中include的方法总结
- JS数组的属性以及方法
- android开发context介绍
- LNK2005:_wmemcmp 重复定义,及C4799:没有EMMS指令
- js动态添加表单form元素
- Java 多线程(六) synchronized关键字详解
- MyBatis动态SQL小tips
- leetcode(63).231. Power of Two
- 第12章:Continuous Latent Variables exercise 1-12
- 7 servlet的入门
- phpcms v9框架的目录结构分析
- centos 7 nodejs安装