mysql静态编译_VS2015静态编译MYSQL-Connector-C

本文详细介绍了如何在Windows环境下使用VS2015静态编译MySQL Connector/C,包括ZLIB、OpenSSL的编译步骤,以及在VS项目中配置静态链接MySQL和OpenSSL的库。通过编译,可以得到适用于静态链接的mysqlclient.lib文件。
摘要由CSDN通过智能技术生成

开发环境1

2

3cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\

vcvarsall.bat amd64# 选择架构:x86 amd64 amd64_x86

set PATH=D:\Qt\DevTools\perl\perl\bin;%PATH%# 设置Perl所在路径到环境变量

静态编译zlib1

2

3cd D:\test\zlib-1.2.11\

contrib\masmx86\bld_ml32.bat# 32位执行这个

contrib\masmx64\bld_ml64.bat# 64位执行这个

最后使用VS2015打开:D:\test\zlib-1.2.11\contrib\vstudio\vc14\zlibvc.sln

生成解决方案后进入:D:\test\zlib-1.2.11\contrib\vstudio\vc14\x64

zlibvc 是动态链接库,zlibstat 是静态链接库。

静态编译openssl1

2

3

4

5

6

7

8cd D:\test\openssl-1.0.2t

perl Configure VC-WIN32 --prefix=D:\test\openssl# 32位架构

perl Configure VC-WIN64A --prefix=D:\test\openssl# 64位通用

ms\do_win64a

nmake -f ms\nt.mak# nt.mak用于生成静态lib库,ntdll.mak用于生成动态dll库

cd out32# out32/out32dll 进入静态/动态库生成目录

..\ms\test# 测试构建情况

nmake -f ms\nt.mak install# 安装到D:\test\openssl

静态编译MySQL-Connector1

2

3

4

5

6

7cd D:\test\mysql-connector-c-6.1.11-src\

mkdir build & cd build

cmake .. -G "Visual Studio 14 2015 Win64" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release -DWITH_SSL="D:\test\openssl" -DOPENSSL_LIBRARY="D:\test\openssl\lib\libeay32.lib" -DCRYPTO_LIBRARY="D:\test\openssl\lib\ssleay32.lib" -DCMAKE_INSTALL_PREFIX="D:\test\mysql"

msbuild LibMySQL.sln

# VS打开D:\test\mysql-connector-c-6.1.11-src\build\LibMySQL.sln可以生成Release解决方案

# 找到D:\test\mysql-connector-c-6.1.11-src\build\libmysql\Release\mysqlclient.lib

测试静态编译的MySQL和OpenSSL项目

在VS2015中如下配置项目属性:项目属性 –> C/C++ –> 代码生成 –> 运行库 –> MT (D用于动态,T用于静态,带d的是debug模式的)

项目属性 –> VC++ –> 包含目录 -> D:\test\mysql\include;D:\test\openssl\include

项目属性 –> VC++ –> 库目录配置 -> D:\test\mysql\lib;D:\test\openssl\lib

项目属性 –> 链接器 –> 输入 –> 附加依赖项 –> libeay32.lib;ssleay32.lib;mysqlclient.lib

测试例子:1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18#include

#include

#include

#include

#include

using namespace std;

int main()

{

cout << "Hello World!" << endl;

cout << "Hello!" << endl;

SSL_load_error_strings();

ERR_load_BIO_strings();

OpenSSL_add_all_algorithms();

printf("MySQL client version: %s\n", mysql_get_client_info());

system("PAUSE");

return 0;

}

其他技巧MySQL官方的动静态库

打开你的MySQL安装目录C:\Soft\mysql-5.7.28-winx64\lib\,libmysql.lib和libmysql.dll为动态库,mysqlclient.lib为静态库。

检查库文件是动态还是静态库

可以用7zip打开库文件。如果里面内容后缀显示为xxx.dll则为动态库的导入文件,后缀显示为xxx.obj则为VS的静态库。后缀显示为xxx.o则为GCC的静态库。

转换VS的.lib/.dll动态库为GCC的.a动态库

1

2

3reimp -d libmysql.lib# 生成libmysql.def的老方法,不推荐

pexports libmysql.dll > libmysql.def# 生成libmysql.def的新方法

dlltool -k -D libmysql.dll -d libmysql.def -l libmysql.a# 生成libmysql.a

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值