这两天一直在搞ArcMap的dll文件,
上个星期搞的一个是用C++编写的dll,生成的dll文件是com组件的,直接用regsvr32命令注册,然后就可以再ArcMap中添加工具进行使用啦。
昨天给我一个用C#写的dll,结果不能添加进ArcMap的工具栏中。前前后后查了大半天的资料,至少知道如何解决了。
首先,如果用c#写的dll是.net组件的,虽然.Net 的组件与COM 组件都是以“.dll”为后缀,但由于.Net 的机制与COM 有本质区别,所以肯定是不能用regsvr32命令来注册。
其次,在Add from file命令时,如果添加.net组件的dll,会提示错误:“Can't load type library from special file”。
查了一些资料,发现应该用regasm命令来注册.net组件并形成一个tlb文件,在arcmap中添加这个tlb文件应该就可以了。如果没有regasm就去下载一个。
————————————————————————————————————————————————————————————————
网上找的regasm命令有很多,大概有一下几种格式:
regasm /tlb XX.lib
regasm xx.lib /codebase
regasm XX.lib /tlb: XX.tlb
regasm XX.lib /tlb: XX.tlb /codebase
实践证明我的电脑上最后一种方法是正确的,一开始用的是第一种方法,因为它也提示了注册成功并成功生成了tlb文件,所以我就一直用这个命令,结果在“Add fro