mysql.h 动态编译命令_VS2015——命令行下编译、静态库动态库制作以及断点调试...

#include"head.h"

int mul(int a,int b)

{

return a*b;

}

sub.cpp:

#include"head.h"

int sub(int a, int b)

{

return a - b;

}

编译这个项目之后(生成——》生成解决方案),会在debug文件夹下生成mymath.lib文件,这个就是我们需要的静态链接库。

下面说明如何调用静态链接库。

首先需要新建一个空项目,起名为test_mymath。

将之前static项目下的head.h这个文件复制到mymath项目的目录下

5801f5ef6df8f13661cee2db036d6286.png

在工程中加入head.h文件,快捷键:Ctrl + Alt +A添加现有项:

d5afeeb7d8417f2cf6e76729e3f312d0.png

新建一个20145211hzy.cpp文件如下:

f670d5e1fc96e1aa6daec794056613b8.png

编译运行可得结果:

3e4c4e67a9f1dce849a9c1e0376d58e5.png

#pragma comment(lib,"mymath.lib"),这一句是显式的导入静态链接库。除此之外,还有其他的方法,比如通过设置路径等等,这里不做介绍。

或者 选中工程名,点击右键 -> 属性, 在“ VC++目录 ”的包含目录里面加入head.h的所在目录的路径,库目录里面加入mymath.lib所在目录的路径;在链接器->输入->附加依赖项输入“mymath.lib”。然后源文件里添加#include"head.h"就OK了。

动态库

创建DLL

1.新建一个空白工程;

2.项目菜单->属性->配置属性->常规->配置类型,改为动态库(.dll);

2d0df4b753a6f0042ce3b84d3a27e5ef.png

3.添加DLL.h,DLL.cpp;

4.在dll.h中添加代码

#ifdef DLL_API

#else

#define DLL_API _declspec(dllimport)

#endif

DLL_API int add(int a, int b);

DLL_API sub add(int a, int b);

DLL_API div add(int a, int b);

DLL_API mul add(int a, int b);

5.在DLL.cpp中添加代码

#include "dll.h"

#define DLL_API _declspec(dllexport)

int add(int a, int b)

{

return a + b;

}

double div(int a, int b)

{

return (a + 0.0) / (b + 0.0);

}

int mul(int a,int b)

{

return a*b;

}

int sub(int a, int b)

{

return a - b;

}

6.编译

b042a8f9575032a0b96220413ffb5431.png

调用DLL

1.在该解决方案中新建一个win32控制台项目;

2.在新项目上单击右键,设为启动项;

3.再次在新项目上单击右键->添加->引用->项目->解决方案,将DLL项目前边的方框选中。

4.添加代码:

#include "stdafx.h"

_declspec(dllexport) int add(int a, int b);

_declspec(dllexport) int sub(int a, int b);

_declspec(dllexport) int MUL(int a, int b);

_declspec(dllexport) double div(int a, int b);

int main()

{

int a=3, b=4;

printf("%d\n", add(a,b));

printf("%d\n", sub(a,b));

printf("%lf\n", divs(a, b));

printf("%d\n", mul(a, b));

system("pause");

return 0;

}

5.编译完成。

bbfdc17cdd9b73d238b1bb867cbbd395.png

其他

如果创建与调用不在同一个解决方案内,需要将生成的mymath.lib文件复制到win32项目文件夹中,并添加引用命令:

#pragma comment(lib,"mymath.lib"),或者在项目->属性->VC++目录中手动添加;

再将mymath.dll文件放入win32项目的调试文件夹中。

关于调试

调试是VS2015很强大的一项功能,它可以帮我们找到程序中的很多错误。

开始调试

先贴出我的测试代码(需要说明的是,这段代码并没有问题):

#include

#include"windows.h"

int sum(int m);

int main()

{

int * pi;

int i, n = 0;

pi = &i;

int arr[3] = { 10, 20, 30 };

pi = arr;

sum(50);

for (i = 0; i <= 50; i++)

{

n += i;

}

printf("The sum of 1-50 is %d \n", n);

system("pause");

}

int sum(int m)

{

int i, n = 0;

for (i = 1; i <= m; i++)

{

n += i;

}

printf("The sum of 1-50 is %d \n", n);

return n;

}

1. 设置断点:可以直接在你需要设置断点的地方按F9,或者在那行右键->断点->插入断点(下面会介绍如何设置函数、临时、条件断点);双击红点,撤销断点。

a2161899545f457ebab02c4988ea3293.png 

e4c5d3749e2624fcbbbb4000f045eab5.png

2. 调试:逐过程调试:按F10,或者点击菜单栏的调试–>逐过程;

逐语句调试:按F11,或者点击菜单栏的调试–>逐语句

函数断点:

在main处设置断点,逐过程调试,因为在main处设置了断点,main函数还未执行

c33e31927e7b66f067e7c089244e34a2.png

继续按F10,直到运行完毕

f3fe693df11142df26bb8a74dcc7025d.png

两个断点间的调试(关于函数断点的逐过程和逐语句):

在调试过程中F5是执行到下一个断点。F10是逐过程,与逐语句不同的是,在执行到下图中断点时,再执行会执行断点下面的语句,而不是去执行语句中的方法。

2f6188fea2e0b99197754da30ef0218d.png

而F11是逐语句,在执行到下图中的断点 时,按F11会执行到sum里面逐步记录执行过程。

b501e598657104974c557dd9365ee80e.png

84543fe5da13b6c46c8f26d152b3043a.png

条件断点:

设置条件断点非常容易。在特定的行上,按F9设置断点;然后右击断点–编辑窗口左侧的红点,在上下文菜单上选择“条件”。

e6b4ea3d7c18f43f89b7fcd80f9b4b85.png

e95b05c90e7fd0a48dd9dbcca99b22ca.png

现在我再运行这个程序按F5达到条件断点,只有当x等于5时,程序运行才会被中断。对于其它条件下的x值,断点将被跳过。

3.完毕:

Alt+F4强行退出调试:

f6d3d5f1aa3a4b050f179b76f1d36f43.png

3. 相关快捷键总结:

F6: 生成解决方案

Ctrl+F6: 生成当前项目

F7: 查看代码

Shift+F7: 查看窗体设计器

F5: 启动调试

Ctrl+F5: 开始执行(不调试)

Alt+F4: 停止调试

Ctrl+Shift+F5: 重启调试

F9: 切换断点

Ctrl+F9: 启用/停止断点

Ctrl+Shift+F9: 删除全部断点

F10: 逐过程

Ctrl+F10: 运行到光标处

F11: 逐语句

总结

VS2015是一个非常好的软件,我今天分享的知识冰山一角,可以做的还有很多!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值