Questions in category: Visual Studio (Visual Studio)
软件 >> C++ >> Visual Studio
<[1] [2] >

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

Posted by haifeng on 2021-04-29 10:24:41 last update 2021-04-29 10:24:41 | Answers (0) | 收藏


无法解析的外部符号  __imp_glclear

 

在项目【属性】-->【配置属性】-->【链接器】-->【输入】中,添加 OpenGL32.lib

2. LINK : warning LNK4098

Posted by haifeng on 2021-04-29 10:22:47 last update 2021-04-29 10:28:21 | Answers (0) | 收藏


LINK : warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

 

 

【C/C++】-->【代码生成】-->【运行库】 ,

3. LINK : warning C4727: 具有相同时间戳的名为

Posted by haifeng on 2021-03-14 21:21:11 last update 2021-03-14 21:21:11 | Answers (0) | 收藏


编译 C++ 项目时, 遇到如下问题:

 

LINK : warning C4727: 具有相同时间戳的名为

d:\...\calculator\release\calculator.pch 的 PCH 已存在于 d:\...\calculator\release\register.obj 和 d:\...\calculator\release\commands.obj 中。 使用第一个 PCH。

4. 关于 fopen() 函数

Posted by haifeng on 2021-03-02 13:44:00 last update 2021-03-02 15:55:32 | Answers (0) | 收藏


在使用 VS2019 时, 如果代码中使用了 fopen() 函数, 则在编译时会显示如下警告.  C4996. 提示使用 fopen_s()

 

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4996 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. studentsMS D:\work\cs\c++\database\StudentsMangementSystem\studentsMS\studentsMS\studentsMS.cpp 28

 

fopen() 函数的原型是

FILE *fopen( const char *filename, const char *mode );

而 fopen_s() 函数的原型是

errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );

 

fp = fopen("users.txt", "rb+");

应该为

fopen_s(&fp, "users.txt", "rb+");

 

 

 

References:

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-160

https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-s-wfopen-s?view=msvc-160

 

5. 如何解决“error:LNK2005 已经在*.obj中定义”?

Posted by haifeng on 2021-01-02 11:38:37 last update 2021-01-02 11:47:11 | Answers (0) | 收藏


一种方法是:

在 属性->配置属性->链接器->命令行中添加 /FORCE:MULTIPLE 

但是这个治标不治本。

 

对于链接出现错误, 处理办法

https://blog.csdn.net/qq_37966125/article/details/105793236

6. 在 Visual Studio 的编辑器中如何查询 a+(b-c) ?

Posted by haifeng on 2020-11-11 20:58:51 last update 2020-11-11 21:00:16 | Answers (0) | 收藏


Q. 在 Visual Studio 的编辑器中如何查询 a+(b-c) ?

A. 按 Ctrl+F, 键入 $a\+\(b-c\)$

如果要查询 b*c-a+d, 则需要键入 b\*c-a\+d

7. 使用 VS2019 编译 VS2015 的项目 Calculator, 所碰到的一些问题.

Posted by haifeng on 2020-09-21 23:34:42 last update 2020-09-21 23:36:52 | Answers (0) | 收藏


如果显示 #include 错误, 即找不到此文件, 那么很可能你改变了项目的相对位置.

比如项目位于 D:\work\cs\c++\vs2015\calculator_vc\calculator

现只是将 calculator 文件夹复制到 D:\work\cs\c++\vs2019\ 下面, 路径位 D:\work\cs\c++\vs2019\calculator

那么很可能就会出现找不到 stdio.h 这个问题.

 

解决办法: 将项目放到 D:\work\cs\c++\vs2019\calculator_vc\calculator

具体可以查看项目的属性.


1>------ 已启动生成: 项目: calculator, 配置: Release Win32 ------
1>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Microsoft.CppBuild.targets(411,5): error MSB8020: 无法找到 Visual Studio 2015 的生成工具(平台工具集 =“v140”)。若要使用 v140 生成工具进行生成,请安装 Visual Studio 2015 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”。
1>已完成生成项目“calculator.vcxproj”的操作 - 失败。
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

 

解决办法:

右键点击项目, [属性]-->[配置属性]-->[常规]-->[平台工具集] 从原来的 Visual Studio 2015 (v140) (未安装) 修改为 Visual Studio 2019 (v142)

 

8. 在VS项目中添加 Win2D.uwp 包

Posted by haifeng on 2019-05-30 15:27:42 last update 2019-05-30 15:27:42 | Answers (0) | 收藏


 

D:\VS2015>dotnet add package Win2D.uwp --version 1.23.0
“D:\VS2015\”中找不到任何项目。
使用情况: dotnet add <PROJECT> package [选项] <PACKAGE_NAME>

参数:
  <PROJECT>        要操作的项目文件。如果未指定文件,则命令会在当前目录下搜索一个文件。
  <PACKAGE_NAME>   要添加的包引用。

选项:
  -h, --help                          显示命令行帮助。
  -v, --version <VERSION>             要添加的包版本。
  -f, --framework <FRAMEWORK>         仅针对特定框架添加引用。
  -n, --no-restore                    在没有执行还原预览和兼容性检查的情况下添加引用。
  -s, --source <SOURCE>               要在还原期间使用的 NuGet 包源。
  --package-directory <PACKAGE_DIR>   要将包还原到其中的目录。
  --interactive                       允许命令停止和等待用户输入或操作(例如,用以完成身份验证)。

9. VS2015中Cordova的设置

Posted by haifeng on 2019-02-19 14:20:38 last update 2019-02-19 14:20:38 | Answers (0) | 收藏


1. 已经安装 Visual Studio 2015

2. 已经单独安装 Android SDK ,路径为 D:\Lib\Android\android-sdk

 

启动 VS2015,  点击菜单栏【工具】-->【选项】-->【用于 Apache Cordova 的工具】-->【Cordova 工具】, 然后点击“运行依赖关系检查器”,

显示

软件/工具 问题
Android SDK 你的系统缺少此软件。你可能还需要在安装后对其进行配置。说明
Joyent Node.js 你的系统缺少此软件。你可能还需要在安装后对其进行配置。说明

 

首先检查

【工具】-->【选项】-->【Cross Platform】-->【C++】-->【Android】页面中关于 Android SDK 的配置路径是否正确

 提示仍需要配置

 

10. 使用 Visual Studio 2015编译的 curl

Posted by haifeng on 2019-02-17 14:07:05 last update 2019-02-17 22:56:39 | Answers (0) | 收藏


Windows 10 下使用 VS2015 编译的 curl
=========================

目的:编译的 curl

操作系统:Windows 10

编译工具:Visual Studio 2015
====================


准备工作:
1. 已经安装 Visual Studio 2015


开始
===

Step 1. 下载 curl 源代码
curl-7.64.0.tar.gz
网址: https://curl.haxx.se/download.html

解压缩至某个文件夹, 比如 D:\download\C++\curl\curl-7.64.0

Step 2.

其他的如 libssh2, nghttp2, openssl, zlib 从下面的网址下载
https://windows.php.net/downloads/php-sdk/deps/
这里分别下载
libssh2-1.8.0-vc14-x86.zip
nghttp2-1.32.0-vc14-x86.zip
openssl-1.0.2q-vc14-x86.zip
zlib-1.2.8-vc14-x86.zip

分别解压缩后,得到 bin\  include\ lib\ 三个文件夹,将它们拷贝到
D:\download\C++\curl\curl-7.64.0\deps\ 文件夹中

目录结构形如:

   somedirectory\
    |_curl-src
    | |_winbuild
    |
    |_deps
      |_ bin
      |_ include
      |_ lib

这里 somedirectory=D:\download\C++\curl\curl-7.64.0
       curl-src=curl-7.64.0

Step 3. 切换至 winbuild 文件夹
cd D:\download\C++\curl\curl-7.64.0\curl-7.64.0\winbuild

Step 4. 详细阅读 BUILD.WINDOWS.txt
特别是下面这部分内容
Building with Visual C++
========================


Step 5. 编译
打开 VS 开发人员命令提示,执行下面的命令

nmake /f Makefile.vc mode=static VC=14 WITH_SSL=static WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static

nmake /f Makefile.vc mode=dll VC=14 WITH_SSL=static WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static

这里 VC=14 对应 VS2015,注意生成的是 x86 机器上的,即上面缺省 MACHINE=x86

然后在 builds 文件夹下有
libcurl-vc14-x86-release-static-ssl-static-zlib-static-ssh2-static-ipv6-sspi-nghttp2-dll


//---------------------------------
如果要加上 CARES,则首先下载c-ares-1.15.0.tar (https://c-ares.haxx.se/)

* 解压缩
* 阅读 INSTALL.md,  P327, ### MSVC from command line
*        参见 [README.msvc]
*  编译步骤很简单
*  首先打开 VS 开发人员命令提示,然后输入下面的命令
*  nmake -f Makefile.msvc
*  编译结束会生成 msvc 文件夹,其中有四个子文件夹
*  msvc
*     |_ acountry
*     |_ adig
*     |_ ahost
*     |_ cares
* 其中 cares 文件夹包含了我们需要的文件(c-ares 库文件),而其余三个是例子程序,用到了这个库。

下面,为了编译 curl 和 libcurl, 在上面的 deps 文件夹下创建子文件夹 c-ares
将 cares 中的文件复制到
D:\download\C++\curl\curl-7.64.0\deps\c-ares

具体 c-ares 中的文件清单参见文末的附录
//---------------------------------

最后回到
D:\download\C++\curl\curl-7.64.0\curl-7.64.0\winbuild

在 VS 开发人员命令提示下键入如下命令

nmake /f Makefile.vc mode=static VC=14 WITH_SSL=static WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static WITH_CARES=static CARES_PATH=../../deps/c-ares

nmake /f Makefile.vc mode=static VC=14 WITH_SSL=dll WITH_NGHTTP2=dll WITH_ZLIB=static WITH_SSH2=static WITH_CARES=dll CARES_PATH=../../deps/c-ares

分别编译得到相应的 curl.exe 及其他文件.

========================================
See also
http://www.atzjg.net/admin/do/view_question.php?qid=2203


=========================
附录 A. c-ares 中的文件清单
=========================

其中 include 中的文件就是来自于 c-ares-1.15.0 中的 .c 和 .h 文件

D:\DOWNLOAD\C++\CURL\CURL-7.64.0\DEPS\C-ARES
+---bin
|       cares.dll
|       cares.exp
|       caresd.dll
|       caresd.exp
|       caresd.pdb
|
+---include
|       acountry.c
|       adig.c
|       ahost.c
|       ares.h
|       ares_android.c
|       ares_android.h
|       ares_build.h
|       ares_cancel.c
|       ares_create_query.c
|       ares_data.c
|       ares_data.h
|       ares_destroy.c
|       ares_dns.h
|       ares_expand_name.c
|       ares_expand_string.c
|       ares_fds.c
|       ares_free_hostent.c
|       ares_free_string.c
|       ares_getenv.c
|       ares_getenv.h
|       ares_gethostbyaddr.c
|       ares_gethostbyname.c
|       ares_getnameinfo.c
|       ares_getopt.c
|       ares_getopt.h
|       ares_getsock.c
|       ares_inet_net_pton.h
|       ares_init.c
|       ares_iphlpapi.h
|       ares_ipv6.h
|       ares_library_init.c
|       ares_library_init.h
|       ares_llist.c
|       ares_llist.h
|       ares_mkquery.c
|       ares_nowarn.c
|       ares_nowarn.h
|       ares_options.c
|       ares_parse_aaaa_reply.c
|       ares_parse_a_reply.c
|       ares_parse_mx_reply.c
|       ares_parse_naptr_reply.c
|       ares_parse_ns_reply.c
|       ares_parse_ptr_reply.c
|       ares_parse_soa_reply.c
|       ares_parse_srv_reply.c
|       ares_parse_txt_reply.c
|       ares_platform.c
|       ares_platform.h
|       ares_private.h
|       ares_process.c
|       ares_query.c
|       ares_rules.h
|       ares_search.c
|       ares_send.c
|       ares_setup.h
|       ares_strcasecmp.c
|       ares_strcasecmp.h
|       ares_strdup.c
|       ares_strdup.h
|       ares_strerror.c
|       ares_strsplit.c
|       ares_strsplit.h
|       ares_timeout.c
|       ares_version.c
|       ares_version.h
|       ares_writev.c
|       ares_writev.h
|       ares__close_sockets.c
|       ares__get_hostent.c
|       ares__read_line.c
|       ares__timeval.c
|       bitncmp.c
|       bitncmp.h
|       config-dos.h
|       config-win32.h
|       inet_net_pton.c
|       inet_ntop.c
|       nameser.h
|       setup_once.h
|       windows_port.c
|
\---lib
        cares.lib
        caresd.lib
        libcares.lib
        libcaresd.lib

 

<[1] [2] >