C++(36)-低版本升级到VS2019项目时遇到的问题(1)

1."const char *" 类型的实参与 “char *” 类型的形参不兼容错误的解决方法

解决方法:(3)

1.在VS2019中依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”即可。

2.在声明变量 char* 时改成 const char *即可。
3.

//1.const char* ->char *
  const char *pcc = "goodidea";
  char *pc = new char[strlen(pcc)+1];
  strcpy(pc, pcc);

//2.const char* ->char *
const char* aa = "this is a const string.";
char* bb = const_cast<char*>(aa);

//3.char* ->const char*
const char* pcc;
char* pc="abcde";
pcc=pc;

2.“timespec”:“struct”类型重定义

C++ pthread pthread.h 中的 timespec 和time.h 中的 结构定义重复了 ,同时两个头文件中的条件编译条件不同,所以造成结构重复定义,简单快速见效的解决方法就是注释pthread.h 头文件中的struct timespce 定义.

3.C1189    #error:  Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d] (编译源文件 src\HX101.cxx)    law    C:\Program Files (x86)\Microsoft VisualStudio\2019\Community\VC\Tools\MSVC\14.29.30133\atlmfc\include\afx.h    24    


在项目属性页中 选择“常规” 在“MFC的使用”中将“使用标准Windows库”改为“在共享DLL中使用MFC”。

4.C2664    “int M“const char [15]”转换为“LPCWSTR”     
       强制转换

5.E0167    "const  char *" 类型的实参与 "const char *" 类型的形参不兼容
TEXT("TEXT")

6.C2664   "char []" 转换为 "LPCWSTR"       
强制转换
(LPCWSTR)


7.从“WCHAR [260]”转换为“const char *”    



8.引用dll报错:error C2491-不允许 dllimport 静态数据成员 的定义
 

// C2491.cpp
// compile with: /c
// function definition
void __declspec(dllimport) funcB() {}   // C2491

// function declaration
void __declspec(dllimport) funcB();   // OK


9.d8016 /ZI和/Gy-命令行不兼容


10. MSB6011    传递给 Microsoft.Build.CPPTasks.Link 任务的参数无效。    


11.C2039 _file 不是_iobuf的成员
   获取文件长度:

  nLen = _filelength(fSqlFile->_file);
   nLen = ftell(fSqlFile);

12.无法解析外部符号  _inet_addr@4
#pragma comment(lib,"ws2_32.lib")


13.LINK2001 无法解析的外部符号:"public: static struct QMetaObject const   QwtPlot::staticMetaObject" (?staticMetaObject@QwtPlot@@2UQMetaObject@@B)

14.设置中“不同选项” 这个要去掉,不然会造成工程设置后无法保存已做的设置
 

15.元素 <GenerateDebugInformation> 具有无效值“是(/DEBUG)”

 

 16:WId与HWND 的转换
HWND hwnd = (HWND)widget->winId();

17错误C2664:'int wsprintfW(LPWSTR,LPCWSTR,...)':无法将参数1从'char [15]'转换为'LPWSTR'

 18.无法连接_mysql_num_rows@4
    如19在属性页->链接器->输入中 添加libmysql.lib

19.LNk2019无法解析的外部符号
  1.h文件

      h文件设置: C/C++ ->常规->附加包含目录:

  2.lib文件
   lib导入设置:  链接器->输入->附加依赖项:

给lib一个搜索路径: 链接器->常规->附加库目录:

  3.dll文件 

20.D8036 不允许有多个源文件
c/C++->输出文件:对象文件名只能是目录,
C/C++ ->输出文件:
ASM          $(SolutionDir)BaseEnv\temp\$(ProjectName)\
对象文件名 $(SolutionDir)BaseEnv\temp\$(ProjectName)\
程序数据库文件名$(SolutionDir)BaseEnv\temp\$(ProjectName)\

 21 C1189

 1.工程-》属性-》C/C++-》代码生成-》运行时库:修改成: 多线程调试(/MTd); (release版本也修改成 多线程(/MT)

2.工程-》属性-》常规-》MFC的使用:修改为:在静态库中使用 MFC
3.C/C++-》预处理 _AFXDLL

22.文件相对路径的设置
    是以.vcproj文件为基准的。

23.不能实例化抽象类
 
 父类是A ;子类是B;
   需要实现父类A中所有纯虚函数。

24.用VS创建QT项目时,提示没有加载入QT的库。
设置中->C/C++->:附加包含目录:
除了自定义的,还要加上从父类继承的,%(AdditionalIncludeDirectories)
此处包含的是头文件。


版权声明:本文为aggie4628原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。