VC中出现的一些小问题的解决办法

2023-05-16

       本人用的是vc6.0的,在实际调试过程中出现一些小的问题,通过网上查询资料得以解决,特此在此整理下,方便后者参考。

               第一问题:程序源码编写完成后编译没有问题,而链接时出现问题。 

1. Windows子系统设置错误, 提示:
               在链接时出现一下错误提示:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
     Windows项目要使用Windows子系统, 而不是Console, 可以这样设置:
    [Project] --> [Settings] --> 选择"Link"属性页,
    在Project Options中将/subsystem:console改成/subsystem:windows  

2. Console子系统设置错误, 提示:
               在链接时出现一下错误提示:LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 
       控制台项目要使用Console子系统, 而不是Windows, 设置:
      [Project] --> [Settings] --> 选择"Link"属性页,
      在Project Options中将/subsystem:windows改成/subsystem:console

3. 程序入口设置错误, 提示: 
               在链接时出现一下错误提示:msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16
      通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口:
     [Project] --> [Settings] --> 选择"Link"属性页, 在Category中选择Output,再在Entry-point symbol中填入wWinMainCRTStartup, 即可

4. 线程运行时库设置错误, 提示: 
             在链接时出现一下错误提示: nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
             或者在链接时出现一下错误提示:nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
    这是因为MFC要使用多线程时库, 需要更改设置:
    [Project] --> [Settings] --> 选择"C/C++"属性页,在Category中选择Code Generation,再在Use run-time library中选择Debug Multithreaded或者multithreaded

    其中,
Single-Threaded                单线程静态链接库(release版本)
Multithreaded                  多线程静态链接库(release版本)
multithreaded DLL              多线程动态链接库(release版本)
Debug Single-Threaded          单线程静态链接库(debug版本)
Debug Multithreaded            多线程静态链接库(debug版本)
Debug Multithreaded DLL        多线程动态链接库(debug版本)

   单线程: 不需要多线程调用时, 多用在DOS环境下
   多线程: 可以并发运行
   静态库: 直接将库与程序Link, 可以脱离MFC库运行
   动态库: 需要相应的DLL动态库, 程序才能运行
  release版本: 正式发布时使用
  debug版本: 调试阶段使用

  

第二问题:VC调试结果一闪而过的解决方法。

              1.加getchar()。要解决这个问题,最简单的方案就是在你的代码的最后,return 0;之前,加上getchar();  

       这个语句将使得你的程序做最后一件事情:从输入缓冲区(输入流stdin)中读一个字符。也就是说在你的其他程序结束后,还要敲一下回车才会结束所有程序。
但是,要注意的是:当程序快结束时,如果你的输入缓冲区中已经有字符了,c语言将直接从缓冲区中读取一个字符,然后结束程序。而不等待你的输入。
比如:
#include<stdio.h>
int main(void)
{
putchar(getchar());
//你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出

getchar();//这是你为了防止一闪而过而加的语句
return 0;
}
这个程序结束时将仍然一闪而过。原因在于第一条getchar()表达式执行的时候,将返回你输入的第一个字符,后面的字符(包括回车字符'\n')留在了缓冲区。要解决这类问题,得随机应变,没有统一的解决方案。在这个例子中,可以这样:
#include<stdio.h>
int main(void)
{
putchar(getchar());
//你的程序只有这么一句,作用是输入一个字符,然后计算机将它输出
while(getchar()!='\n')
continue;//这个循环将把输入缓冲区的内容清掉,一直清到换行符。

getchar();//这是你为了防止一闪而过而加的语句
return 0;
}
                 2.加system("pause")。
            这样其实就是执行了系统的一个命令pause。 pause命令就是让DOS窗口暂停,并出现 "press   any   key   to   continue "后再按下按键才能退出DOS窗口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC中出现的一些小问题的解决办法 的相关文章

随机推荐

  • Notepad++最好看的主题

    Notepad 43 43 最好看的主题 xff0c 收藏了很久 xff0c 现在拿出来和大家分享 配色如下 xff1a 使用方法 xff1a 1 安装Notepad 43 43 2 将KamiTheme xml放到 Notepad 43
  • DTLS协议中client/server的认证过程和密钥协商过程

    1 DTLS介绍 1 1 DTLS的作用 互联网先驱们最开始在设计互联网协议时主要考虑的是可用性 xff0c 安全性是没有考虑在其中的 xff0c 所以传输层的TCP UDP协议本身都不具备安全性 SSL TLS协议是基于TCP socke
  • Ubuntu18.04 实现串口通信

    最近由于项目需要 xff0c 研究了关于在ubuntu下串口通信的功能实现 期间遇到一些问题 xff0c 跟大家分享下 1 代码 comm service h ifndef comm service h define comm servic
  • [STM32] 串口数据帧处理(第一弹)

    文章目录 1 串口使用的常用场景2 字节帧处理总结 1 串口使用的常用场景 使用串口的主要目的是实现数据的交互 xff0c 数据的交互的方法脱身于常用的场景 这里描述一个比较典型的场景 xff1a MCU作为主控制器通过串口和外部的设备或者
  • 串口编程—(1)串口基本知识

    串口是用来干什么的 xff1f 串行接口 简称串口 xff0c 也称 串行通信 接口或 串行通讯接口 xff08 通常指 COM接口 xff09 xff0c 是采用 串行通信 方式的扩展接口 串行接口 Serial Interface 是指
  • C语言操作redis数据库

    文章目录 1 开发环境2 C语言redis库 hiredi安装配置2 1 下载并且解压hiredis2 2 hiredis安装 3 hiredis简单测试4 运行出错解决办法5 验证5 1 运行程序5 2 redis客户端验证 1 开发环境
  • 5.0 NuttX File System

    转载请注明出处 xff1a 5 0 NuttX File System Alvin Peng的博客 CSDN博客 文章均出自个人理解 前言 前一段时间折腾了几个驱动 xff08 PWM Serial I2C xff09 xff0c 这次来折
  • 使用cmake构建一个大型项目框架

    文章目录 使用CMake构建一个大型项目工程1 大型工程目录结构介绍1 1 工程目录结构介绍1 2 工程目录说明 xff08 我是这样设计的 xff0c 你们也可以参考类似这样设计 xff09 1 3 最外层CMakeLists txt说明
  • github下载加速的几种方法

    文章目录 1 github加速的几种办法1 1 把github的代码 xff0c 转到码云上1 2 有人做了github的代下载网站 xff0c 可以从上面进行下载1 3 使用cnpmjs镜像进行加速1 4 使用国外服务器进行搭桥 2 总结
  • EasyLogger的代码解读和移植(linux和stm)

    文章目录 1 EasyLogger目录结构分析 2 EasyLogger之docs查看总结 2 1 EasyLogger之docs查看 2 1 2 api gt kernel md文档 2 1 3 port gt kernel md文档 2
  • C++之socket.io编译使用

    文章目录 1 什么是socket io2 开发环境配置2 1 获取socket io的源码2 2 cmake安装2 3 boost安装2 3 1 获取源码2 3 2 解压编译下载 2 4 rapidjson下载2 5 websocketpp
  • github push的改版

    1 记录一次github 推送时的错误 错误如下 xff1a remote Please see https github blog 2020 12 15 token authentication requirements for git
  • Frp内网穿透

    Frp内网穿透 所有经过服务器的内网穿透都是有一个服务端和客户端 因为都需要借助服务器的公网ip来访问进而达到内网穿透的效果 frp的github开源地址 https github com fatedier frp frp的说明文档 htt
  • linux常见的几种排序方法

    我们以数组a 61 2 6 8 9 1 2 进行排序输出作为列子 xff1a 下面我来总结几种方法来帮助大家学习 1 xff1a 常规排序 首先2和6对比 xff0c 2不比6大不因此不交换 xff0c 所以还是268912 xff0c 然
  • 值得推荐的C/C++框架和库

    值得学习的C语言开源项目 Libevent libev是一个开源的事件驱动库 xff0c 基于epoll xff0c kqueue等OS提供的基础设施 其以高效出名 xff0c 它可以将IO事件 xff0c 定时器 xff0c 和信号统一起
  • cmake教程4(find_package使用)

    本文主要内容如下 xff1a 1 cmake find package的基本原理 2 如何编写自己的 cmake module模块 3 使用cmake find package 使用不同版本的opencv lib问题 xff08 openc
  • A*算法

    如此好贴 xff0c 不能不转 xff01 原文地址 xff1a http dev gameres com Program Abstract Arithmetic AmitAStar mht 本文版权归原作者 译者所有 xff0c 我只是转
  • 3.5RC_Channel 和 SRV_channel

    前言 这部分是之前在折腾ROVER的时候梳理了一遍 xff0c 但是没有形成记录 xff0c 现在从新从对象的角度来分析一遍 xff0c 包括映射 转换 数据结构 等方面进行梳理 xff1b 数据结构 首先分析的入口是从Rover read
  • CAN通信详解

    本章我们将向大家介绍如何使用STM32自带的CAN控制器来实现两个开发板之间的CAN通讯 xff0c 并将结果显示在TFTLCD模块上 本章分为如下几个部分 xff1a 30 1 CAN简介 30 2 硬件设计 30 3 软件设计 30 4
  • VC中出现的一些小问题的解决办法

    本人用的是vc6 0的 xff0c 在实际调试过程中出现一些小的问题 xff0c 通过网上查询资料得以解决 xff0c 特此在此整理下 xff0c 方便后者参考 第一问题 xff1a 程序源码编写完成后编译没有问题 xff0c 而链接时出现