记录一些编程过程中遇到的乱七八糟的问题

本文汇总了在使用Visual Studio进行编译过程中常见的错误及其解决方案,包括外部符号解析失败、预处理器定义调整、资源文件路径校验等问题,旨在帮助开发者快速定位并解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.无法解析的外部符号 __std_reverse_trivially_swappable_8

  • 情况:编译完ompl后,利用生成的静态库文件写应用程序,编译的时候报的这个错;

  • 解决:网上说这个大多是由于vs的编译器版本不匹配导致的,查了一下,果然如此,ompl用vs2017编译生成的,最后写应用程序的时候因为是在qtcreator里面写,没有正确设置版本,改为vs2017的编译器之后问题解决。

2.VS错误 :

代码:C2338    

描述:You've instantiated std::aligned_storage<Len, Align> with an extended alignment (in other words, Align > alignof(max_align_t)). Before VS 2017 15.8, the member type would non-conformingly have an alignment of only alignof(max_align_t). VS 2017 15.8 was fixed to handle this correctly, but the fix inherently changes layout and breaks binary compatibility (*only* for uses of aligned_storage with extended alignments). Please define either (1) _ENABLE_EXTENDED_ALIGNED_STORAGE to acknowledge that you understand this message and that you actually want a type with an extended alignment, or (2) _DISABLE_EXTENDED_ALIGNED_STORAGE to silence this message and get the old non-conformant behavior.

3.LPTSTR无法转为std::string 或 “const char *”无法转为“LPCWSTR”

  • 情况:在使用WindowsAPI时经常遇到这样的编译错误;
  • 解决:设置属性字符集貌似能解决这个问题。vs中可以查看一下项目属性->常规中的字符集选项,将其选择的Unicode改为未设置或者多字节尝试一下。QtCreator中可以在pro文件里面加 DEFINES -= UNICODE;

4.NMAKE:-1: error: U1077: 'QTDIR\bin\rcc.exe' : return code '0x1'

  • 情况:QT工程中遇到的,感觉毫无指向性。
  • 解决:直接复制错误内容搜了一下,瞬间找到解决方式。  一般来说,资源文件qrc里面包含了文件而实际路径没有这个文件,会报这个错。所以检查一下资源文件中的文件即可。

5.原VS动态库工程改为静态库工程编译后,引用出现未实现的函数报错

  • 情况:如上所述,原本的VS动态库工程,在属性中直接改为静态库工程后,能正确生成lib文件,然而在引用这个lib文件时,出现了报错,就是一些函数未实现的报错。
  • 解决:__declspec( dllexport ) 以及 __declspec( dllimport ) 是在动态库中才需要用到的,静态库中会使得找不到后面定义的函数,所以删掉这个就ok了。

6.VS默认库函数重定义

  • 情况:如上所述,一些VS或者系统的默认库函数的重定义报错。如下:
  • 解决:VS中在属性->配置->C/C++->链接器->输入->忽略特定默认库中可以操作;QT中在pro文件中增加
    QMAKE_LFLAGS_DEBUG = /DEBUG /NODEFAULTLIB:****.lib
    其中/DEBUG可更改。

 

 

以后慢慢补充。。。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值