【问题标题】:Trying to build mysql-connector-cpp on Windows尝试在 Windows 上构建 mysql-connector-cpp
【发布时间】:2019-02-24 22:52:00
【问题描述】:

我希望能够在调试模式 (VS2k17) 下构建 mysql-connector/c++ 应用程序,并且了解我能做到这一点的唯一方法是首先在我的计算机上从源代码构建 mysql-connector-cpp (Windows 10/64bit) .我尝试了以下方法:

cmake . -DWITH_SSL=C:\Users\Rawb\source\libraries\OpenSSL-Win64

它看起来成功完成......

Install location: C:/Users/Rawb/MySQL/MySQL Connector C++ 8.0
Connector libraries will be installed at: lib
-- Configuring done
-- Generating done
-- Build files have been written to: C:/Users/Rawb/source/repos/mcc2/mysql-connector-cpp

但是当我运行以下 cmake build ...

cmake --build . --config

此输出失败...

LINK : fatal error LNK1104: cannot open file 'ssleay32.lib' [C:\Users\Rawb\source\repos\mcc2\mysql-connector-cpp\connector.vcxproj]
Done Building Project "C:\Users\Rawb\source\repos\mcc2\mysql-connector-cpp\connector.vcxproj" (default targets) -- FAILED.
Done Building Project "C:\Users\Rawb\source\repos\mcc2\mysql-connector-cpp\ALL_BUILD.vcxproj" (default targets) -- FAILED.
Build FAILED.

"C:\Users\Rawb\source\repos\mcc2\mysql-connector-cpp\ALL_BUILD.vcxproj" (default target) (1) ->
"C:\Users\Rawb\source\repos\mcc2\mysql-connector-cpp\connector.vcxproj" (default target) (10) ->
(Link target) ->
LINK : fatal error LNK1104: cannot open file 'ssleay32.lib' [C:\Users\Rawb\source\repos\mcc2\mysql-connector-cpp\connector.vcxproj]
0 Warning(s)
1 Error(s)

Time Elapsed 00:00:14.57

我可能做错了什么?我只需要将ssleay32.lib 文件放在某处吗?我确实有它的副本,但不确定应该如何包含它。还是更复杂? IE。我是否也需要先在我的机器上构建 Open SSL?这对我来说是一个很深的兔子洞,我可能在我头上哈哈!

注意:我也在 reddit 上问过这个问题,但没有运气,所以希望这里的人可能知道。

【问题讨论】:

  • "我希望能够在调试模式 (VS2k17) 下构建 mysql-connector/c++ 应用程序,并且了解我能做到这一点的唯一方法是首先构建 mysql-connector-cpp来自我计算机上的源代码“ 这是真的吗?也许有一个奇怪的 Visual Studio 在起作用,但是从在 Linux 上使用这个库来看,这不是真的。我怀疑这在 Windows 上是否属实:必须在调试中重建每个 3rd 方依赖项才能获得自己代码的调试版本,这将是完全禁止的。如果这是真的,请详细说明这是如何以及为什么会这样。
  • @LightnessRacesinOrbit - 根据文档,是的,_"动态链接时,即使连接器库是在发布模式下构建的,也可以在调试模式下构建代码。但是,在这种情况下, 在调试会话期间将无法进入连接器代码。为了能够做到这一点,或者在静态链接到连接器时在调试模式下构建,您必须使用调试配置从源代码自己构建连接器/C++。 "_(downloads.mysql.com/docs/connector-cpp-1.1-en.a4.pdf)
  • 好的,也就是说你不需要需要这样做,除非你想进入连接器代码。为什么要单步执行连接器代码?
  • 感谢您让我注意到这一点,我并没有这样准备,我想我根本无法“介入”调试。真正让我感到困惑的是,每当我之前尝试将活动构建设置为调试并运行本地 Windows 调试器时,程序都会立即崩溃(但在发布时运行良好)。我现在刚刚尝试构建,它似乎可以工作 - 很明显我在调试中遇到了一些错误配置问题或其他问题/与我的 OP 中的这个问题分开。我会将此标记为已解决。谢谢!
  • 这只是说如果你想调试库,你必须在调试中构建库。但是您不想调试库(除非您正在开发它!)。我不太了解的部分是关于静态链接的部分。希望您没有这样做,因此我们不必深入研究它;)

标签: c++ mysql-connector


【解决方案1】:
  1. 如果您使用的是 MSVS(任何版本,包括 MSVS 2017),那么我建议使用“NMake”(而不是 cmake)。或者只是在 MSVS IDE 中创建一个新的 C/C++ 库项目。

  2. 您要查找的标志是/LIBPATH。我认为您不需要“-D”,但您当然需要“/LIBPATH”。

    以下是 MSVS 链接器选项:

    https://docs.microsoft.com/en-us/cpp/build/reference/linker-options?view=vs-2017

  3. 最后,您可能能够在不实际调试(和重建)连接器代码的情况下进行所有您想要的故障排除/跟踪。

    以下是在 MySQL 连接器中启用跟踪的方法:

    https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-debug-tracing.html

如果这有帮助,请告诉我。

【讨论】:

    猜你喜欢
    • 2019-06-20
    • 2021-10-02
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2017-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多