有关同一解决方案下多个工程相互调用的问题

最新修改时间:20160515
以前自己在写C#的时候就经常需要用到这方面的知识,但当时感觉挺容易处理的,也就并没有留意。现在开始接触C++,刚开始还是有很多不熟悉的。这里我不是想讲lib和dll的区别,就只是说下如何相互调用之间的类并使用吧。

两个工程之间类调用

当我们在同一解决方案下相互之间调用类时,假设现有两个工程A和B,工程A需要调用工程B中的class。
首先右击工程A打开属性对话框,在通用属性里面添加新引用便可以将B文件添加进去。之后在配置属性里面的C/C++的常规目录里的附加包含目录中添加工程B的头文件路径,只有添加了这个头文件路径,才能在工程A中使用#include不会报错。
理论上做到以上两点,便能够调用了。但是如果我们只是这样的话是不能够调用的。因为运行时会提示缺少了lib文件。之所以会这样是因为我们的两个工程生成的文件都是EXE。如果A是启动项目,那么需要将B中配置属性的常规目录下的项目默认值里面的配置类型改为“静态库(.lib)”,因为只有这样,B工程才会在debug文件夹下生成lib文件,运行时才不会出现“不能打开某lib”的错误。

工程调用dll中的类

20160515(成功案例)
测试了很多次,也问了一些人才算是清楚了如何调用,以前自己也尝试了类似的方法,但都没有成功过。
参考教材:MSDN演练
首先说说在同一工程下调用dll,其实跟静态类调用的配置基本是一样的。首先需要在通用属性中将dll工程添加进去。然后在包含目录中添加dll文件的头文件地址。以前应该是这样操作过,但不明白当时为什么没有成功。
我们往往用的dll是别人给的,自己测试的结果是,如果是编写程序还是需要在包含目录中添加dll文件的头文件地址的。同时在链接器的输入选项的附加依赖项中添加相应的lib文件。同时最重要的一点,需要将dll和lib文件放在与自己编写的程序文件夹下面,而不是debug下面。但是当我们运行debug里面的EXE的时候,则需要把dll和lib放在debug下面。
至于_declspec(dllexport)这样的声明,大家可以自己去查相关的说明。

你可能感兴趣的:(C++)