看了sdk中的一些例子,在bmake编译过程中,rlib.exe工具会先把.rsc文件生成.mi文件,接着又把.mi文件生成.ma文件。
请问生成.mi文件这一步主要起什么目的?
为啥不直接用rlib工具把所有的.rsc文件生成.ma文件?
非常感谢老师的指点。
主要目的是将与语言相关的资源和与语言无关的资源分开处理。如果我们不考虑多语言版本问题的话,可以将所有资源文件一次性都直接生成到ma中即可,简化mke的过程。
Answer Verified By: 管华明
打开了sdk中listbox例子生成的一个mi文件 listbox.mi,发现文件开头就是MicroStation Resource File - Version 5.0。
是不是意味着实际上.mi文件就是.rsc文件?
你理解正确,*.mi就等价于*.rsc。总的过程是:通过mke和mki两种控制文件将.r分别生成.rsc和.mi,最终将它们打包(rlib.exe)到.ma文件中。
mke中的.r是与语言无关的,而mki中的.r是与语言相关的。这样将来你想将程序改成其他语言(比如MicroStation的汉化)时,只需要将mki和与语言相关的.r文件发给第三方公司(比如翻译公司)进行翻译即可,不会泄露任何你核心代码中的内容。在第三方公司端就能最终生成可用的ma文件。
这种架构的设计虽然看起来复杂,但是是非常适合大型程序的。
还是我上面说的,对于我们自己写的小application,不一定非要遵从这个复杂的架构。我在《一步步学习MDL》中就没有这样用,不想给阅读者增加额外的负担,因为本来mke就够令人头痛的了。
确实。更何况一般应用人员写的小插件都只是单位内部使用,走出国门很难^_^.
再次感谢符老师的细心回复,您的解答让我总算把这个过程搞明白了。