如何使用 vc142 而不是 vc141 构建解决方案

How can I build a solution with vc142 and not vc141

我正在尝试使用 visual studio 2019 构建 wxsqlite3,当然使用平台工具集 vc142。我的wxWidgets版本是3.1.2,我已经成功地使用vc142构建了它。

不幸的是,我一直收到错误

D:\cpp\wxWidgets-3.1.2\include\msvc\wx\setup.h(125,10): error C1083: Cannot open include file: '../../../lib/vc141_x64_dll/mswud/wx/setup.h': No such file or directory

如何使用 v142 构建此 wxsqlite3 以便我可以停止出现此类错误?

这是一个 hack,但由于 MSVS 2017 和 2019 是 ABI 兼容的(这就是为什么他们使用工具集版本 141 和 142,而不是 15 和 16),您只需创建一个 link 从 vc141_x64_dllvc142_x64_dll 使用例如junction 工具。

当然,使用相同的编译器和选项重建所有内容更好更安全,但如果您出于某种原因不能这样做,上述方法也行得通。

wxWidgets 3.1.2发布时,wxWidgets还没有支持VS2019的自动library/DLL加载机制,错误引用了VS2017的include路径。这已在 wxWidgets git 存储库中修复。在文件 include/msvc/wx/setup.h 中修改了第 68 行并添加了第 70 和 71 行。您将不得不相应地调整您的 wxWidgets 安装。

但是,由于 wxWidgets 不为 VS2019 提供预构建的二进制文件,我假设您自己构建了 wxWidgets 库。并且您可能没有使用编译器特定的前缀。也就是说,在您的安装中,库路径 ../../../lib/vc142_x64_dll 很可能根本不存在;相反,您在 ../../../lib/vc_x64_dll.

中拥有 wxWidgets link 库

如果是这种情况,您必须在 wxSQLite3 分发的文件夹构建中调整属性文件 wx_setup.props。查找属性 wxCompilerPrefix 和 wxMsvcVersionAuto 并调整如下:

<wxCompilerPrefix>vc</wxCompilerPrefix>

<wxMsvcVersionAuto></wxMsvcVersionAuto>

b 我测试了最新wxSQLite3版本的VS2019构建文件,没有任何问题。也就是说,原则上 wxSQLite3 构建文件应该开箱即用。但是,可能需要对 wx_setup.props 进行修改以匹配您的安装。 此后,VS2019 构建应该适合您。

但下次如果您在 wxSqlite3's Issue tracker 上的一个地方提出问题可能会更好。