C++项目添加依赖项

 

1.新建解决方案,项目A

2.为项目A添加一个依赖项目B,项目B做为静态lib被项目引用,

       项目B创建步骤如下:

       a>选择菜单"文件"->新建->项目,弹出“新建项目”对话框;

       b>左侧列表选择Visual C++,右侧列表选择win32控制台应用程序,

           对话框下面输入名称,选择位置,解决方案选择添加到解决方案,确定。

       C>Win32应用程序向导,下一步,选择应用程序类型为静态库,

             添加公共头文件以用于选择MFC(根据实际情况选择,因为项目需求<nb30.h>编译需要选择MFC),完成。

3.项目配置,项目A右键选择属性,选择通用属性,引用->添加新引用->选择项目B;

   引用项目B的头文件目录,步骤如下:配置属性->VC++目录->包含目录:添加项目B头文件路径..\B\Header。

 

 

 

 

抄来的,也可以参考

 

c++附加依赖项、项目依赖、引用

 

新建一个工程,在解决方案出添加新工程,新建项目或者现有项目,

 

 

点击新建项目,现在解决方案里面就有两个项目啦,把依赖项目设置为demo的依赖项目,那么依赖项目属性就要设置为lib,依赖项目的属性--配置类型--原来是 --应用程序exe,修改为静态库lib啦。demo的 配置类型还是--应用程序exe。

 

 接下来就添加引用。在demo属性里面 引用--添加新引用--

 

选择 确定就可以了。

 

然后,在依赖项目里面的函数就可以在demo里面用了。就跟opencv配置库文件,在程序里面用库中的函数是一样的额勒。。。。

 

 

一定要注意两个属性的设置 不能设置反了,也不能不设置 ,不然就会错误。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

下面的是别人写的相关知识。

 

附加依赖性:http://www.cnblogs.com/MuyouSome/p/3380134.html

包含目录:#include <headerfile.h>中headerfile.h的搜索目录。
如果有XXX.h找不到,设置这个目录可以解决。

附加依赖项:C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。
所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。这个就是在附加链接库中设置。
其实,一般的库会用#pragma comment(lib,"xxx.lib") 来设置
这个过程出错会出现link error,大概是“未定义的函数XXX”。

库目录:就是寻找.lib文件的目录。
如果设置错误,会link error,提示"找不到XXX.lib"。

 

在VS工程中,添加c/c++工程中外部头文件及库的基本步骤:

    1、添加工程的头文件目录:工程---属性---配置属性---c/c++---常规---附加包含目录:加上头文件存放目录。

    2、添加文件引用的lib静态库路径:工程---属性---配置属性---链接器---常规---附加库目录:加上lib文件存放目录。
         然后添加工程引用的lib文件名:工程---属性---配置属性---链接器---输入---附加依赖项:加上lib文件名。

    3、添加工程引用的dll动态库:把引用的dll放到工程的可执行文件所在的目录下。

 

含义:

 

 

 在项目生成时,可能需要首先生成某些项目,以便生成由其他项目使用的可执行代码。使用 “解决方案属性页”对话框 ->“通用属性”->“项目依赖项”  设置当前生成顺序。若要访问此对话框,请在“解决方案资源管理器”中选择一个解决方案,选择“视图”菜单上的“属性页”,然后选择“通用属性”下的“项目依赖项”。


    关于项目依赖项 
    当一个项目使用另一个项目生成的可执行代码时,生成代码的项目被称为使用该代码的项目的项目依赖项。只要某个项目依赖项尚未生成,或自最近生成以来已被修改,则应首先生成该项目,以便生成和更新要使用的代码。
    例如,如果项目 B 需要由其项目依赖项项目 A 生成的可执行代码,并且自上次生成以来已对项目 A 进行了修改,则在生成项目 B 之前应重新生项目 A。这使得可以先对项目 A 提供的可执行代码进行修改,然后再让项目 B 使用它。
如果自上次生成以来未对项目 A 进行修改,则不需要重新生成新的项目 A。仅生成项目 B。
    某些项目可能以浅灰色显示在依赖项列表中且其复选框处于清除状态。不能选中这些项目,因为这样会创建依赖项循环(P1 依赖于 P2,而 P2 又依赖于 P1),从而使生成陷入停滞状态。
    另外一些项目也可能以浅灰色显示在依赖项列表中,但其复选框却处于选中状态。这些项目已由集成开发环境添加,无法更改。例如,将 Visual Basic 项目中的项目引用添加到另一个项目中时将自动添加一个生成依赖项,只有通过删除该引用才能移除该依赖项。

 

 

 

在 C++ 项目中添加引用

打开项目属性管理器

 

  1. 在菜单栏上,依次选择“文件”“打开”

  2. 导航到解决方案或项目。

  3. 解决方案资源管理器中,打开项目节点的快捷菜单,然后选择“引用”

  4. “属性页”对话框中,选择“添加新引用”按钮。

  5. “添加引用”对话框中,指定要添加的引用,然后选择“确定”按钮。

 

若要移除引用,请打开其快捷菜单,然后选择“移除”

此时将打开引用管理器,并按组列出可用引用。 项目类型确定将显示以下哪一组:

  • “程序集”组,包含“框架”和“扩展”子组。

  • “解决方案”组,包含“项目”子组。

  • “Windows”组,包含“核心”和“扩展”子组。 可以使用对象浏览器浏览 Windows SDK 或扩展 SDK 中的引用。

  • “浏览”组,包含“最近”子组。

 

引用方法:http://www.cnblogs.com/cumtb3S/archive/2010/11/23/1885826.html

 

1. 添加编译所需要(依赖)的 lib 文件


[解决方案资源管理器]“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开。 
(等同于“#pragma comment(lib, "winsock.lib") ”语句)


2. 添加库(Libs)文件目录


方法 1:[解决方案资源管理器]“项目->属性->配置属性->连接器->常规->附加库目录” 
方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“库文件”目录


3. 添加包含(include)文件目录


方法 1:[解决方案资源管理器]“项目->属性->配置属性->C/C++->常规->附加包含目录” 
方法 2:[菜单]“工具->选项->项目和解决方案->C++ 目录”,选择对应平台,然后添加所需“包括文件”目录

 

 

**使用引用的方式调用DLL,lib

1)在需要调用的地方写头文件的引用,

2)将引用的地方在引用中写上引用的函数

3)将生成的lib和dll放入需要引用的函数中。

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用VS2015编译和调用动态链接库dll 1. 首先建工程,选择dll,记得勾上“导出符号” 后面不用自己搞那些宏定义会省事很多。 建立工程myDll,记得勾上“导出符号” 类型选择dll 2. IDE自动生成的代码已经把整个架构弄好了,其中和项目同名的.h和.cpp文件就是我们自己写代码的地方了。我想写的dll是导出一个类,在这里我就直接在它自动生成的CmyDll类上面改了。 myDll.h myDll.cpp 在mydll.h和mydll.cpp中给类添加成员函数 //mydll.h class MYDLL_API CmyDll { public: CmyDll(void); // TODO: 在此添加您的方法。 int myFunction(int a, int b); }; //mydll.cpp int CmyDll::myFunction(int a, int b) { return a*b; } 3.编译的时候我选择了release,这里可以用默认的debug也行 在mydll.h和mydll.cpp中给类添加成员函数 最后生成解决方案后产生的mydll.lib和mydll.dll就是我们需要的二进制文件了。lib文件是编译是要用的,而dll是调用这个库的程序运行时需要的。 调用dll 1.重新建立一个工程 这回选择普通的控制台程序就行了。我建了个名为myDllCall的工程。 2.把库的头文件include进来,以及连接lib文件 其中 include进来的 myDll.h 和 **#pragma comment()**的lib根据自己的路径写。 #include "stdafx.h" #include "../../myDll/myDll/myDll.h" //头文件 #pragma comment(lib,"../../myDll/Release/myDll.lib") //调用自己写的外部库 #include int main() { CmyDll mydll; int a, b; std::cin >> a >> b; std::cout << mydll.myFunction(a, b) <> a >> b; std::cout << mydll.myFunction(a, b) << std::endl; return 0; } 3.dll放到可执行文件同一目录下面 刚刚的代码直接编译没问题,运行会报错. 直接编译没问题,运行会报错 原因是dll要和生成的可执行文件在同一个目录下,我把mydll.dll放进去之后就解决了。 我们成功的在自己的工程里调用了外部的类 可以看到我们成功的在自己的工程里调用了外部的类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

野狼位位

给点辛苦费0.1元

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值