如题,dll里只封装了一些基础函数,不需要命令表。应该如何修改mke文件?
把例子里, Compile source files这一部分关于命令表的删除:
$(genSrc)$(appName)cmd.h : $(baseDir)$(appName)cmd.r
$(rscObjects)$(appName)cmd.rsc : $(baseDir)$(appName)cmd.r
再把link MDL Application这一部分 $(rscObjects)$(appName).mi : $(rscObjects)$(appName)cmd.rsc 冒号后面的依赖删除,会报mi文件未生成的错误。
请参考如下系列文章:
一步步学习MicroStation CE MDL开发
第一章中提供的mke就是一个最简单的mke文件,未含有命令表。
还是有点问题
$(o)$(appName).rsc : $(baseDir)$(appName).r
这个.r文件是必须的吗?因为这个dll并不打算直接在Bentley中加载?
不在Bentley软件中加载的DLL其实根本就不需要借用mke这套机制来生成。您直接在VS中创建一个生成DLL的项目就可以生成了。
呃,我的原话是不“直接”加载,只是想这个dll里封装一些工具函数供.net调用。.net BUG太多了,目前只打算用来做交互,主要逻辑还是在C++中实现。
看了下您给出链接中,.r文件中需要实现DllMdlApp结构,就想问下这是必须的吗?感觉我的需求并不需要这个结构。
另外,Bentley的C++代码貌似无法直接用vs编译吧?
Chao Cheng said:呃,我的原话是不“直接”加载,只是想这个dll里封装一些工具函数供.net调用。.net BUG太多了,目前只打算用来做交互,主要逻辑还是在C++中实现。
如果您是写一些供.NET调用的托管类的话,似乎需要用C++/CLI。请参考SDK中的例子
C:\Program Files\Bentley\MicroStationCONNECTSDK\examples\MixedMode\ElementPropertiesExample
它只生成一个DLL。没有对应的ma
Chao Cheng said:看了下您给出链接中,.r文件中需要实现DllMdlApp结构,就想问下这是必须的吗?感觉我的需求并不需要这个结构。
这个是为了生成对应的ma文件的,如果仅仅是DLL,确实是不需要的。
Chao Cheng said:另外,Bentley的C++代码貌似无法直接用vs编译吧?
如果您对VS的使用比较熟悉的话,是完全可以的。需要手工配置VS项目中的外来头文件位置和外来库文件位置即可。
我们执行bmake命令其实它后台也是在调用VS的编译器cl.exe和链接器link.exe,您仔细看黑窗口的输出信息,应该能找到痕迹的。
VS直接编译会报错,和以下链接一样
https://communities.bentley.com/communities/other_communities/chinafirst/f/microstation-projectwise/144262/msce
搜了下,也没发现解决方案。
1.创建如下的DLL项目
2. 设置项目属性中的头文件和库文件位置:
3.设置项目属性中的附加库,按mke文件中常用的库文件名指定就可以了。
如果还出现什么错误信息,请直接将报错信息贴上来。
Answer Verified By: Chao Cheng
错误信息: