问题标签 [vcpkg]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
782 浏览

c++ - 获取 cURL 证书以使用 C++ 和 vcpkg 安装

所以我有一个类在 Visual Studios 2017 中使用 curl 进行 http 调用,该类是通过讨论的 vcpkg 安装的:这里,使用 curl_easy 函数调用:

如果我不包括curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, FALSE);关闭 SSL 验证的这一行,我会收到错误:curl_easy_perform() failed: Peer certificate cannot be authenticated with given CA certificates. 我尝试按照以下说明安装证书:链接,但据说将下载的证书放在与 curl.exe 相同的文件夹中。据我所知,vcpkg 没有安装 curl.exe。我查找了 .crt,并在 vcpkg 下找到了找到的证书的图像。我应该在哪里放置 .crt 文件以进行身份​​验证以与 Visual Studio 一起使用?

证书图片

0 投票
1 回答
558 浏览

c++ - 使用 vcpkg 下载依赖项而不创建 dll

我正在使用vcpkg下载cpprest包,所以我可以cpprest在我的项目中使用:

但是在构建我的项目之后,它会生成可执行的二进制文件,还会cpprest.dll在Release 文件夹中生成LIBEAY32.dllSSLEAY32.dllzlib1.dll

如何将 dll 编译成一个可执行文件?

0 投票
1 回答
1786 浏览

c++ - 安装点云库

我最近被介绍给vcpkg,因为我一直在寻找安装点云库 (PCL) 的最佳方法,以便在我的 Visual Studio C++ 项目中使用它。

我已经安装了 PLC 静态库.\vcpkg install pcl:x64-windows-static,然后.\vcpkg integrate install将 libs 和 dll 集成到 Visual Studio 2017。我现在的目标是在官方 PCL 网站上 运行迭代最近点算法的演示。

我创建了一个处女项目,并执行了以下操作来添加 PCL:

  • 将“vcpkg-master\installed\x64-windows-static\include”路径添加到属性页->VC++ 目录->包含目录
  • 将“vcpkg-master\installed\x64-windows-static\include”路径添加到属性页
    ->C/C++ ->Additional Include Directories
  • 将所有 lib 文件(在 vcpkg-master\installed\x64-windows-static\lib 中的那些)添加到属性页->链接器->附加依赖项
  • 在属性页->链接器->常规->附加库目录中添加了“vcpkg-master\installed\x64-windows-static\lib”路径

我正在尝试在 Debug x86 模式下编译前面提到的演示,但我不断收到以下错误:

请注意,在安装的 PCL 目录中,有两个名为manual-link的文件夹。
第一个是“vcpkg-master\installed\x64-windows-static\debug\lib\manual-link”,包含两个lib文件:

  • boost_prg_exec_monitor-vc140-mt-gd.lib
  • boost_test_exec_monitor-vc140-mt-gd.lib

另一个是“vcpkg-master\installed\x64-windows-static\lib\manual-link”,包括:

  • boost_prg_exec_monitor-vc140-mt.lib
  • boost_test_exec_monitor-vc140-mt.lib

我不知道我在这里错过了什么。有人在使用 PCL 和 Visual Studio 2017 时遇到过同样的问题吗?这个问题有什么解决办法吗?

0 投票
2 回答
682 浏览

c++ - cmake,使用 /MD 和 find_package(Boost) 构建

我有一个 Python 扩展库 (pyd),为了能够调试它,我需要使用多线程 DLL (/MD) 运行时库进行编译。在我注入 Boost 依赖项之前,这很有效。 但我第一次调用 Boost 函数时,代码会因读取访问冲突异常而崩溃

在此处输入图像描述 在此处输入图像描述

经过一番调查,结果发现 cmake find_package(Boost) 使用不同的运行时库 ieboost_filesystem-vc140-mt-gd.lib 引入了 boost 库构建

我把它放在一个简单的测试用例中。

使用 vcpkg 构建 boost:
git clone https://github.com/Microsoft/vcpkg.git
.\bootstrap-vcpkg.bat
vcpkg install boost

这只会生成 -mt 和 -md-gd boost 库。

CMakeLists.txt

源码.cpp

运行 cmake:

正如您在输出中看到的那样,cmake 仍然试图找到错误的运行时间并忽略了我的 Boost_USE_STATIC_LIBS 和 Boost_USE_MULTI_THREADED 标志!

这是链接阶段的输出

更新:我从头开始构建 boost 库,代码停止崩溃。所以这似乎是一个 vcpkg 问题,它没有构建我需要的 boost 版本。
b2 runtime-link=shared -j16
我的新 CmakeList.txt 文件

0 投票
1 回答
3727 浏览

c++ - 如何使用由 vcpkg 生成的 cpprest-sdk 的静态构建?

我想cpprestsdk用作我的项目的静态库,我使用该vcpkg工具通过输入命令获取静态库:vcpkg install cpprestsdk:x86-windows-static,我在 vcpkg 文件夹的安装目录下有以下lib文件,我想知道是否要将我的应用程序链接到cpprestsdk我只需要将它与结果链接起来cpprest_2_10.lib?或者我应该添加所有其他库?

在此处输入图像描述

0 投票
1 回答
382 浏览

c++ - 英特尔 TBB -“InitializeCriticalSectionEx”:找不到标识符编译器错误

我有一个依赖于 OpenCV 和 TBB 的 VS (C++) 项目,因此我为每个库创建了属性表并将它们包含在项目中。一切正常,代码已编译。

昨天,我开始使用vcpkg包管理器。我通过 vcpkg 安装了 OpenCV 和 TBB,一切似乎都正常。我创建了一个空项目,包含两者的标头并测试了新编译的库是否有效。验证后,我回到我的主项目并删除了属性表,所以我可以使用来自 vcpkg 的库。自上次成功编译以来,我没有以任何方式更改代码。

但是当我现在尝试编译代码时,我两次收到此错误(在 main.cpp 和子模块中)

tbb\critical_section.h(53):错误 C3861:“InitializeCriticalSectionEx”:找不到标识符

有谁知道这里发生了什么或为什么会发生此错误?

更新

我自己发现了错误。我正在添加 poco-libraries 标签,因为它实际上是 TBB 和 Poco 之间的冲突。

0 投票
2 回答
971 浏览

c++ - 我应该使用 Nuget 或 Vcpkg 安装适用于 C++ 的 AWS 开发工具包吗?

我使用 Nuget 安装了适用于 C++ 的 AWS 开发工具包。我的构建工作正常,但是当我尝试运行时,我收到一条丢失的 Dll 消息。我要么必须添加 Dll 路径,要么将其复制到我的输出目录,但源路径是 C:\Users\Tom\Documents\Bitbucket\nos\MyApp\Builds\packages\AWSSDKCPP-Transfer.redist.1.4.34\build \native\bin\Win32\Debug\v141\dynamic\aws-cpp-sdk-transfer.dll 这看起来很荒谬。我找不到使用 Nuget for C++ 执行此操作的更简单方法。

有人建议我改用 Vcpkg。它比 Nuget 更好还是我会遇到同样的问题?

参考设置适用于 C++ 的 AWS 开发工具包

0 投票
0 回答
211 浏览

c++ - 级联静态库链接机制

sdl2-image 是作为静态库构建和安装的libSDL2_image.a,它依赖于另一个静态库,如 webp、libpng 等。当我像这样链接它时:

它失败了,显示错误:

发生了什么?

还有一个问题:

给出一个静态库 libA.a,以及依赖于 libA.a 的 libB.a。如果我将程序与 libB.a 链接,我是否还必须与 libA.a 链接,例如

有必要吗?如果,为什么?如果 libA.a 有其他依赖项并且我不知道,我该怎么办?

0 投票
1 回答
3641 浏览

c++ - 无法在 Visual Studio 和 vcpkg 中构建 cmake 项目(致命错误 C1083)

我今天安装了 vcpkg,启用了与 Visual Studio 的集成,即 .\vcpkg 集成安装,并开始安装库。

我基本上安装了 cpprestsdk 并触发了 boost 库的安装。然后我在 Visual Studio (CMake) 中打开了该项目。

当我安装 cpprestsdk 时,我收到了这条消息:

所以我的 CMakeLists.txt

但是,当我构建项目时,我遇到了一些关于提升的错误

c:\code\cpprest-client\multipartformdata.cpp(16):致命错误 C1083:无法打开包含文件:'boost/uuid/random_generator.hpp':没有这样的文件或目录

c:\code\cpprest-client\api\userapi.h(36):致命错误 C1083:无法打开包含文件:'boost/optional.hpp':没有这样的文件或目录

在我的 powershell 中,我看到安装了这些库

任何想法,发生了什么。我已经为此浪费了几个小时。

0 投票
0 回答
345 浏览

mongodb - Mongocxx 连接池(VS Release 版本)连接远程服务器时出现问题

我已经通过 vcpkg 安装(并且已经使用了一段时间)mongocxx 驱动程序,并且所有内容都正确安装并在调试版本中完美运行(我使用的是 Visual Studio 2017,我的应用程序是 Windows Form c++(CLR)应用程序) . 在我的应用程序中,每次我在服务器上上传一些数据时,我都会获得一个连接池并获取一个客户端。我的自动数据上传的典型间隔是 10 分钟。我的设置是

问题是,数据库文档每 10 分钟上传一次,在 Debug 版本中没有问题,但是对于 Release 版本(当我加载我的应用程序的 Release 版本并开始使用它时),mongo insert 每次 10 分钟都不起作用. 它只是错过/跳过了一些条目(根据我的观察,主要是在成功尝试后的一个)。

使用远程计算机中加载的发布版本,即使我运行了调试版本,它也可以在更短的时间间隔内完美运行(例如每个 1 分钟),但我无法进行任何调试。