vs项目管理 续:从debug切换release

以release编译并发布使用

  • 情况
  • 解决基本错误
  • 测试
  • 出问题了...
  • 总结

情况

这个系列的前半截在这里:链接
现在只完成了一半,那么我想试下release版本,却发现…
vs项目管理 续:从debug切换release_第1张图片
又来了…

解决基本错误

那好吧,网上说是release跟debug配置分开的,也就是说…include path莫不是给我归零了?(当然,debug模式你在切换回去是能正常跑的)
果然,一查发现是include没更新…更新过来,好啦!完成!
把三个项目的include都改掉,再次编译,还是挂了,又看见那个熟悉的pch字眼…
vs项目管理 续:从debug切换release_第2张图片
那好吧把预编译都改掉,应该行了吧…

测试

ok,过了,试试能不能外部调用~
把生成的三个dll放进原架构的bin目录,替换掉gcc编译的东东,留下exe可执行,然后运行该有的命令!
vs项目管理 续:从debug切换release_第3张图片

出问题了…

分析一下,前面正常是因为libdcompiler.dll是gcc生成的(这个项目暂时没迁到vs管理),而有关vs生成动态库的,全挂了
那么我们复位一下,删掉所有,然后用gcc编译,看看是不是代码的问题:结果正常,这说明不是源码的问题(每个组件都能正常工作,pcd是dogc的依赖,如果dogc能跑那说明pcd没问题)

来分析下,如果只有dogt出问题的话,那问题应该在pcd/dparser/dogt模块,然而dogc没问题说明pcd/dparser没问题,那么只有dogt出毛病.

查看release版到底libdogt.dll,发现只有…10k?您这msvc有点强悍啊!肯定是有问题,经过仔细地检查,发现没有导出函数(无语),也就是前文提到的那个DLLAPI宏(我喜欢这么称呼).

把要导出的主函数dogt_main加上DLLAPI前缀,然后rebuild,再复制过去,成功!

总结

在release项目时,如果是第一次切换成release模式,请注意初始化项目配置,一般来说使其跟debug一致,然后切记不要忘了导出库函数.发布项目时,把.dll动态库文件,.lib导入库文件(一般来说只有几k,因为只存储了符号信息而非代码段)还有整个项目要用到的头文件一并发布,存在include/中

下一节

你可能感兴趣的:(学习笔记,visual,studio,dll,c++,c语言,编译器)