代码改变世界

调用第三方库出现的问题

2016-07-23 20:46  tengsc  阅读(737)  评论(0编辑  收藏  举报

      运行一个需要调用第三方库的小程序本应该是很简单的事情,但是要想顺利地把程序跑起来首先要迈的第一道坎就是正确的配置路径和编译环境。鉴于前两次在开始调用时,状况百出而我却无从下手,所以非常有必要回顾一下最基本的问题。

  在windows 环境下,从编写到运行需要两个步骤:① 首先写好源文件(.c),经过cl.exe编译器编译,从而生成了.obj 目标文件【编译】

② 生成的目标文件(.obj)再结和库文件(.lib)经过link.exe 链接器从而生成可执行文件。【链接】【运行】*.h   *.lib   *.dll 这些很常见却又纷繁复杂带有不同后缀的文件又具体在哪些环节扮演什么样的角色呢?  .h(header头文件)是编译时候必须的,lib是链接时需要的,而dll(动态链接库)则是运行时候需要的。lib文件的作用是告诉链接器,调用的函数在哪个dll中,函数执行代码在dll中的什么位置,这也就是为什么需要附加依赖项.lib文件。当然如果是静态库文件,则没有dll,只有lib,这是函数可执行代码部分也在lib文件中。 

  而要想链接第三方库往往有以下三件事情要做:(摘自:http://stackoverflow.com/questions/35008426/link-3rd-party-library-in-visual-studio)

1. 需要加入include 路径

方法:工程(project)-->属性(Properties)--> C/C++-->常规(General)-->附加包含目录(additional Include Directories)

点击编辑(edit),选中*.h所在的文件路径

2. 链接库文件(*.lib file)

方法:工程(project)-->属性(Properties)--> 链接器(linker)-->常规(General)-->附加库目录(additional Library Directories)

工程(project)-->属性(Properties)--> 链接器(linker)-->输入(Input)-->附加依赖项(Additional Library),增加想链接的库

3. 在工程目录下提供*.dll

程序正确运行必须要找到相应的*.dll 文件,要么参考PATH变量把它放到相应文件夹下,要么在当前的运行路径下,一般在*.vcxproj文件的旁边。

如果调用的是静态库,那么可以跳过步骤二,如果是一个动态的库跳过步骤三

 

 

 

 

输入(Input)-->,点击编辑