Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
众所周知,当我们编译好一个OF中新的自定义库libxxx.so的时候,我们只需要做的就是在controlDict文件夹中增加libs("libxxx.so")的一句话,此时我们就可以使用该库了。我想问的是,此处可以这样做的深层机制是什么?为什么我们可以通过增加libs("libxxx.so")的方式来避免重新编译上层应用呢?谁能解释下OF在此处用到的"黑魔法"呢?谢谢诸位!
哪里“黑”了,正常操作而已,看看重要的类Time的构造,有一句
if ( argList::validOptions.found("no-libs") ? !args.found("no-libs") : true ) { libs_.open(controlDict_, "libs"); }
主动去libs字典项查找库名,再参考这个 https://www.cfd-china.com/topic/2837/运行时动态加载库?_=1618541781950 很清晰明了的呀
好的谢谢大佬!我按照您说的好好查一下,之前确实一直没有关注过Time类,没想到Time类中还会涉及到输入输出,主动查找controlDict中的关键字,我一直都是从IOobject类中去查找运行时加载库的相关功能,一直没有找到,所以才觉得有些“黑科技”。再次感谢!