C++ -- VS2017实际项目调用外部DLL经历

项目背景:机械臂的SDK,厂家给了.h,.lib和.dll。同时SDK的体积不算大,隐式调用即可。隐式调用相比显示调用写代码更方便同时更加方便移植。

1.官方给了SDK的说明文档,但是为了开发还是要看一下DLL里面封装的函数和函数的定义。

参考上一篇博文:C++ -- 解析DLL

从这里大体可以看出函数和定义,但是名字很奇怪,因为C++有重载函数机制,编译器为了保证名称各不相同,会自己修改一下名称,为了防止编译器修改,可以在编写DLL的时候用  extern "C"来避免,具体搜相关资料。厂家给的DLL怎么写不在我们的控制范围之内了。

2.VS2017里面进行相关的配置完成DLL的隐式调用。

(1) 新建一个控制台应用程序。

在项目名称上右击,“在文件资源管理器中打开文件夹”,可以看到大概这样的目录。

C++ -- VS2017实际项目调用外部DLL经历

(2)把外部DLL、Lib、h文件复制到项目目录下。 

C++ -- VS2017实际项目调用外部DLL经历

C++ -- VS2017实际项目调用外部DLL经历 

 C++ -- VS2017实际项目调用外部DLL经历

(3)  回到VS,在项目名称上右击,选择属性。

设置VC++目录选项。这个选项是针对.h文件的。

C++ -- VS2017实际项目调用外部DLL经历

设置为 SDK的头文件目录。 

C++ -- VS2017实际项目调用外部DLL经历 

(4) 设置库目录,这个是针对.lib文件的。.lib文件的作用在动态链接库里面是作为DLL的引用文件,通过.lib文件,编译器可以找到对应的.dll文件里面的函数。

C++ -- VS2017实际项目调用外部DLL经历

设置为SDK的.lib文件的文件夹位置。 

C++ -- VS2017实际项目调用外部DLL经历

(5) 设置  链接器 选项,这个是针对DLL文件的,但是注意,我们不直接引用DLL文件,是通过Lib文件来间接找到DLL文件。

C++ -- VS2017实际项目调用外部DLL经历

把需要用到的DLL文件的对应的Lib文件的名称添加到 附加依赖项,注意是Lib文件。

 C++ -- VS2017实际项目调用外部DLL经历

C++ -- VS2017实际项目调用外部DLL经历 

3.这时候在主程序中包含SDK的头文件,并编写相关的一些代码。

C++ -- VS2017实际项目调用外部DLL经历

 生成->生成解决方案。 

C++ -- VS2017实际项目调用外部DLL经历

注意:看一些资料可能很多在代码中使用了 

#pragma comment(lib,"ASAGE_API.lib")
#pragma comment(lib,"Robot.CppBase.lib")
这个语句,这个语句的作用和我们在链接器->输入中附加依赖项添加lib文件的作用是一样的,所以在属性里面设置了前面那些后,在程序中就不用编写这句代码了。