在同一个解决方案下,如何从一个工程中调用另外一个工程的函数
来源:互联网 发布:mac jenkins 配置 编辑:程序博客网 时间:2024/06/05 18:12
摘自http://9200cs.blog.163.com/blog/static/13457736920106695350747/
两个项目分别是test1和test2,test1中有一个函数fun()被test2调用,用法如下:
//test1.h
int fun(int a, int b);
//test1.cpp
#include <iostream>
#include "test1.h"
using namespace std;
int fun(int a, int b)
{
return a + b;
}
然后将test1的配置类型改为 静态库(.lib)。
//test2.cpp
#include <iostream>
#include "test1.h"
using namespace std;
void main()
{
cout << fun(2, 3);
}
然后将test2的项目依赖项设置为test1,在test2的附加包含目录中找到test1.h所在的文件夹,调试即可。
//另注:生成 .lib文件的工程中可以没有main()函数。
//另注:工程test1之所以生成的是 .lib文件而不是 .dll文件,是因为test1与test2在同一个解决方案中,没有涉及外部接口。
下面自己总结下自己的感受:
注意:这个时候会再解决方案文件夹下的debug或release文件夹下生成test1工程的.lib文件test1.lib,在进行编译的时候会将这个静态库的东西完全链接进入exe可执行文件,这样生成的可执行文件可以拷贝出来到任何其他windows平台的计算机上就可以运行;一个缺点就是如果代码很大的话,生成的.exe可执行文件会很大,静态链接方式就是会再编译的时候把所有需要的东西编译链接进可执行程序;
如果使用生成的.dll,这样生成的exe会相对小一些,但是如果将这个可执行文件拷贝到其他windows平台的计算机上,很可能就会无法运行,就需要把这个生成的dll文件拷贝到运行该程序的计算机上的所需要的制定目录下才可以(一般就是system32目录下);缺点就是比较麻烦;
记得以前做过的一次作业就是这样,写的一个MFC的应用程序,拷贝到别人电脑上死活跑不住,结果发现默认的编译方式是动态链接编译方式,之后设置成静态链接进行重编译,发现生成的可执行文件有了数倍的增长,但是放到别人的windows平台的计算机上就很顺利地运行了。在这里多些高手同学的指教~~
- 在同一个解决方案下,如何从一个工程中调用另外一个工程的函数
- c++如何一个文件如何调用在同一个工程下的另一个文件的函数
- Xcode如何在自己的工程中引入另外一个工程及相关错误的解决办法
- Winform 解决方案中两个工程的调用/在VS2010如何方便地重命名一个项目
- 在vc下怎样把一个工程里的Dialog对话框移植到另外的一个工程中
- mfc中如何在一个对话框中调用另外一个对话框的函数
- c++工程里一个文件怎么调用另外一个文件里的函数
- 工程应用另外一个工程
- VS C#工程【调用另外一个项目的类】
- 如何在Visual Studio 2013调用同一个工程下的两个.cpp文件?
- 在同一个类中,一个方法调用另外一个有注解的方法,注解失效的原因和解决方法
- 如何一个android工程作为另外一个android工程的lib
- 如何一个android工程作为另外一个android工程的lib
- 如何一个android工程作为另外一个android工程的lib
- 如何一个android工程作为另外一个android工程的lib(小结)
- 如何一个android工程作为另外一个android工程的lib
- 如何一个android工程作为另外一个android工程的lib
- 如何一个android工程作为另外一个android工程的lib
- Ubuntu 10.10 安装谷歌PINYIN拼音输入法 详细步骤
- 超级详细Tcpdump 的用法
- 处理器——半导体巅峰,纵横四十年
- XML第三课
- NDIS Passthru转发数据包开发小记(1)
- 在同一个解决方案下,如何从一个工程中调用另外一个工程的函数
- css与xml的连接
- 双向链表操作
- BDF字体规范
- MySql用户角色管理及权限分配(使用MySQLMembershipProvider和MySqlRoleProvider)
- 清除VS2008的缓存文件
- the day after tomorrow
- 数据结构之单链表
- <s:action>未执行问题