项目源代码目录结构建议【原创】 .

项目源代码目录结构建议为便于源代码的管理,提高源代码模块合成时的效率,避免浪费不必要的时间,对项目目录结构作以下建注:本建议适用于多个DLL项目的解决方案整体结构解决方案整体目录结构应该是下面的样子(以数字录相机项目(DVR)为列):iWise_DVR---------build||-------document|--------bin-------debug| || -----release|--------lib-------debug| || -----release|| -------include---projectA| || |--projectB| || |--projectC|-------projectA||-------projectB||-------projectC注:图中的ProjectAProjecBProjectC应为相应的真实项目名称Build目录结构Build为存放VC编译时产生的中间文件的地方 .build-------projectA--------debug| || ----release-----projectB--------debug| || ----release-----projectC--------debug|----release例如:当新建了ProjectA时,应该在项目->项目属性->常规选项卡中将输出目录和中间目录都设置成../build/ProjectA/Debug并将Release版本设置../build/ProjectA/ReleaseBin目录Bin目录存放程序可执行文件,包括所有模块输出的DLL文件由于一般程序开发都有两个版本DebugRelease因此Bin里面就有了这两个目录 .bin------------debug|------release例如:当新建了ProjectA时,应该在项目->项目属性->链接器->常规选项卡中将输出文件设置成../bin/Debug/$(ProjectName).exe并将Release版本设置为../bin/Release/$(ProjectName).exeInclude目录Include目录存放各个项目导出的头(.H)文件.include--------projectA|-----projectB|-----projectC例如:需要使用项目AProjectA)头文件的项目应该在项目->项目属性->C/C++->->附加包含目录添加../include/ProjectA另外,项目A的导出头文件不应该在整个iWise-DVR目录中出现 两份(以上),也就是说项目A也需要使用../include/ProjectA目录下的头文件,那么也按照上述方法设置附加包含目录。*************************************iWise dvr 策略模块总结:(VS2003.Net)1.创建工作空间,建立目录结构Bin

build

doc

Include

Lib

projectA

projectB

projectTestA

projectTestB
2.创建子项目模块:选择“MFC DLL”的“MFC扩展DLL”3.dll中需要使用ado,在DllMain的DLL_PROCESS_ATTACH,DLL_PROCESS_DETACH,DLL_THREAD_ATTACH,DLL_THREAD_DETACH分支加入:if(FAILED(::CoInitialize(NULL)))

{

AfxMessageBox("com init failed");

return 0;

}
::CoUninitialize();3.1关闭工程,拷贝头文件到相应目录中去。3.2打开工程属性,选择“配置属性”的“常规”,输出目录和中间目录改为如下格式的:../build/StragetyProject/Debug3.3“C/C++”页的“常规”的“附加包含目录”,填入如下格式:../Include/StragetyProject添加头文件到项目中---》“添加现有项”3.4预处理器定义,添加“_VIDEORECORD_STRATEGY_EXT”3.5连接器的“常规”的“输出文件”改为如下格式:../bin/debug/strategy.dll(说明:如果此处修改默认的dll文件名,则需要修改def文件)3.6连接器的高级的导入库改为如下格式:../lib/debug/Strategy.lib4.在子项目中添加类或现有文件#ifdef _VIDEORECORD_STRATEGY_EXT

#define VIDEORECORD_STRATEGY_API __declspec(dllexport)

#else

#define VIDEORECORD_STRATEGY_API __declspec(dllimport)

#endif

/
*******

包含头文件

*******/

class CVideoRecordStrategyPrivate;//代理实现类

/*******

类定义

********/class VIDEORECORD_STRATEGY_API CVideoRecordStrategy{……;};定义_VIDEORECORD_STRATEGY_EXT

//不推荐使用:class export:AFX_EXT_CLASS5.上面讲述的是debug版本的,release相同设置。6.测试程序或主程序应用6.1“配置属性”“常规”的“输出目录”和“中间目录”改为如下格式:../Build/TestProject/Debug6.2“配置属性”“调试”的“工作目录”改为:../Bin/debug6.3“C/C++”“常规”的“附加包含目录”改为如下格式:../Include/StragetyProject6.4连接器“常规”的“输出文件”改为:../bin/debug/$(ProjectName).exe6.5连接器“常规”的附加库目录改为如下:../Lib6.6连接器“输入”的“附加依赖项”如下:test1.lib多个文件之间用空格隔开,某个文件名中有空格时,每个文件加引号再用空格6.7设置项目的依赖项6.8设置启动项目7.例子,测试dll中添加一个函数:int test_class::test_foo(void)

{

::MessageBox(NULL,"aaa","aabb",MB_OK);

return 0;

}

测试程序或主程序中添加
#include "dll_class.h"test_class _test;_test.test_foo();


2004-11-01 18:03 深圳原文链接: https://www.cnblogs.com/jinsedemaitian/archive/2013/04/23/5589136.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/85713

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月9日 下午10:12
下一篇 2023年2月9日 下午10:13

相关推荐