在使用VS编写代码的时候,往往有以下几点的困扰:
1、测试时候,存在多个main函数,不能通过编译需要改掉main函数名只保留一个;
2、工程中代码量过多,功能有重叠部分且存在相互调用关系(仅使用文件夹管理无法实现);
针对以上问题,就需要采取解决方案下新建多个项目的管理方式了,如此可以将功能分解,独立分开调试,也便于程序文件的管理,更一步就是能够将部分功能代码封装成dll库作为主调项目的输入依赖。
基于上述需求,今天将自己的部分代码进行多项目管理(如下图解决方案结构),然后却发现新建的项目编译不通过,即使反复检查新项目内代码以及改变输出的位置,也一直报错:
1>Link:
1> 正在创建库 ..\bin\ReadShpFile.lib 和对象 ..\bin\ReadShpFile.exp
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
1>..\bin\ReadShpFile.exe : fatal error LNK1120: 1 个无法解析的外部命令
最终发现问题是以上一个解决方案下新建多个项目存在根本性的问题,上面是在一个项目的解决方案下再新建一个项目的,那么新建的项目还是依赖原有的项目,如此是无法链接的。我们需要重新创建一个空解决方案,再在其中多个项目如此这些项目之间才是相互独立的。
一个解决方案下新建多个项目步骤
1、创建一个空白的解决方案
文件->新建->项目(或者直接在起始页中点击新建项目)->其他项目类型->VS解决方案(然后按下图操作)
2、添加项目/新建项目
直接选中解决方案右键,添加—>(现有或者新建)项目—>左边选Visual C++—>空项目(填写名称和位置,,确定即可)
然后添加上相关的代码或者新建文件编程有:
生成解决方案可以发现两个项目均编译成功。
3、正常运行程序
需要运行某一个项目时,有两种方式:
1)、选择该项目右键工程(practice)->设为启动项目(J),然后就可以类似单一项目运行了。也就是说,当你要运行哪个项目时,就右击哪个工程,将其设为启动项。
2)、可以选择该项目右键工程(practice)->调试(G)->启动新实例(S),就可以单独运行该项目了。