查看: 2374|回复: 8

编译的时候合并DLL文件

[复制链接]

该用户从未签到

发表于 2011-4-30 19:48:23 | 显示全部楼层 |阅读模式
当OSG安装完成后会生成好多个.dll文件,如 osg55-osg.dll、osg55-osgDB.dll等,现在的问题是:如何在编译源文件的时候将生成的.dll文件合并到一个.dll文件中去呢?比如只生成osg55-osgall.dll就包含了osg55-osg.dll、osg55-osgDB.dll

该用户从未签到

发表于 2011-4-30 20:31:41 | 显示全部楼层
分开正好模块化,为什么要合并?

想合并的话,估计得重写CMake文件吧,两个库合成一个库.
还有一种方法,就是用vs把一个库里面的文件全部添加到另一个库里面,然后再编译一下

该用户从未签到

 楼主| 发表于 2011-5-1 21:47:54 | 显示全部楼层
回复 2# lzj

“就是用vs把一个库里面的文件全部添加到另一个库里面,然后再编译一下”,这样的话会不会出现函数重复定义的问题呢?
谢谢五一假期还回答问题,谢谢。

该用户从未签到

发表于 2011-5-2 00:43:14 | 显示全部楼层
应该不会吧,你试一试呗,如果有重复的,批量替换一下,改一下函数名


不过分开正好,你完全没有必要把两个库合成一个吧

该用户从未签到

发表于 2011-5-3 09:21:31 | 显示全部楼层
也许您可以尝试静态编译的方案,此时不会生成DLL文件,但是您可以把所有的LIB包含在自己的程序或动态库中

该用户从未签到

 楼主| 发表于 2011-5-3 15:41:42 | 显示全部楼层
回复 5# array


    静态编译是我自己新建一个工程,把所有的源文件都包含进去编译,还是在利用cmake编译的时候勾选不同的选择情况呢?

该用户从未签到

发表于 2011-5-3 16:19:22 | 显示全部楼层
cmake编译时取消选中DYNAMIC_OPENSCENEGRAPH和DYNAMIC_OPENTHREADS选项

该用户从未签到

发表于 2011-5-3 17:39:30 | 显示全部楼层
这个第一次了解啊

该用户从未签到

 楼主| 发表于 2011-5-3 21:01:51 | 显示全部楼层
回复 7# array


    谢谢锐哥啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表