zoukankan      html  css  js  c++  java
  • vc 6.0项目转为vs 2017项目遇到 的问题

    在vc6工程转为vc2017工程中,可以直接用vc2017将工程升级。但是有一些错误提示要按提示,修改。其中最大的一个问题是下文的第5条,最后发现是LASLib.lib的版本太老导致的问题。只要把这个llib对应的函数注释掉就可以。laslib可以使用高版本的。

    另外,我也尝试了在vc2017新建“文档/视图”程序,将将其移动过去。其实根据就搞错了,原来的程序是基于对话框,“文档/视图”模式会出错。

    1、编译错误C2065 “i”: 未声明的标识符

    解决办法,将
    for (int i = 0; i < m_deviceList.size(); i++)
    {
    m_ctlDevicelist.AddString(m_deviceList[i]);
    }
    中变量i的定义放到函数体开头
    int i;
    for (i = 0; i < m_deviceList.size(); i++)
    {
    m_ctlDevicelist.AddString(m_deviceList[i]);
    }

    2、 fopen建议修改为fopen_s

    关闭sdl检查即可或或者听从建议使用fopen_s

     

    3、关于error LNK2005的解决办法

    项目中出现这个错误的原因是:原始工程为TowerTreat,工程中有个TowerTreat.cpp,文件中定义了CAboutDlg类,但是在vs 2017中我将工程名称改为了TowerModeler,TowerModeler.cpp中也有一个CAboutDlg类,这样在链接的时候会冲突。

    4、error LNK2019: 无法解析的外部符号

    出现原因是没有配置相关的lib(我的项目中包括opengl的库,opengl的配置:https://blog.csdn.net/kiaralovelysheep/article/details/81735794

    5、LNK1104 无法打开文件“LIBCD.lib”

          出现这类问题一般是由于所运行的项目是VC6(或者vs2003)创建的,而后又用VS2005或者更高版本工具打开项目导致的,原因都是因为LIBCD.lib文件被更改了.要解决问题的话,只要在链接设置那里忽略它就没问题了。

    解决办法是:

    第一种方案:在项目-属性-链接器- 命令行 加 /nodefaultlib:libcd

    第二种方案:在项目-属性-链接器- 输入-忽略特定库加:LIBCD.lib

    两种方法都可以。

    参考自:https://www.cnblogs.com/hyfemma/archive/2010/11/14/1876846.html

    6、错误 LNK2005 "class _AFX_THREAD_STATE * __stdcall AfxGetThreadState(void)" (?AfxGetThreadState@@YGPAV_AFX_THREAD_STATE@@XZ) 已经在 mfc140d.lib(mfc140d.dll) 中定义 TowerModeler D: eposGridModelerTowerModeler afxcwd.lib(afxstate.obj) 1

    7、严重性 代码 说明 项目 文件 行 禁止显示状态
    错误 LNK1112 模块计算机类型“x64”与目标计算机类型“x86”冲突 TowerModeler D: eposGridModelerTowerModelerucrtd.lib(ucrtbased.dll) 1

    https://blog.csdn.net/tfy1028/article/details/8660823

     

    8、IntelliSense:  "char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容

     https://blog.csdn.net/quinn1994/article/details/94618725

     9、/ZI”和“/Gy-”命令行选项不兼容

     

    https://jingyan.baidu.com/article/46650658fcec97f549e5f826.html

    10、错误 LNK2026 模块对于 SAFESEH 映像是不安全的。 TowerTreat D: eposDNPowerGridModelBuilderLASlib.lib(lasreader.obj) 

     

     https://jingyan.baidu.com/article/47a29f24334312c01423992e.html

     11 0x00007FFF51140BCB (mfc140d.dll)处(位于 TowerModeler.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。

     12 引发了未经处理的异常:读取访问权限冲突。 this 是 nullptr。

    在vc 6.0中可以这样获取句柄:CTowerTreatDlg* mainWnd = (CTowerTreatDlg*)AfxGetMainWnd();

    但是在visual studio中不行。我们可以先获取app,再通过app的m_pMainWnd转化。

    CTowerTreatApp* application = (CTowerTreatApp*)AfxGetApp();
    CTowerTreatDlg* mainWnd = (CTowerTreatDlg*)application->m_pMainWnd;

     参考自:https://blog.csdn.net/aastoneaa/article/details/7821475

  • 相关阅读:
    第六次作业SSM
    第五次作业——MVC2项目实践
    第四次作业——JSP显示新闻
    第三次作业——servlet应用
    第二次作业——模仿登录页面
    第一次作业——Java web基础
    Alpha项目测试
    作业三
    第二次作业
    第一次阅读作业-201731062609-庞斌
  • 原文地址:https://www.cnblogs.com/dowtowne/p/12696123.html
Copyright © 2011-2022 走看看