QT调用C#开发的.net组件,首先我来讲一下我们项目的背景:最初想开发一套跨平台的gis系统,原来一直使用mapobject20和qt,现在自然而然的要使用arcengine和qt进行,最初的实现没有遇见太大问题,开发到最后系统的效率、稳定性、代码实现难度都出现了问题,很多异常不能处理,导致系统直接崩溃,现在只能寻找一个替代方案,最后采用了使用C#对arcengine的接口进行封装,然后qt采用activex的形式对封装后的com接口进行访问。
简要过程如下:
1. 使用C#封装ArcEngine的相关业务接口,接口参数只能是标准类型(int、double、string等)
2. 调用RegAsm /codebase MyService.dll
注意:codebase是指设置注册表中的基本代码,也就是记录下dll的路径,供ccw在Com客户端在任何位置都可以找到该dll,如果没有/codebase属性,则ccw默认为dll与Com客户端执行程序的当前目录下面
3. 通过 dumpcpp 的方式生成 QT 对 COM 接口的 C++ 包装类
代码:dumpcpp -o HGisLiarary {00062FFF-0000-0000-C000-000000000046}
注意:qt的pro中需要设置CONFIG += qaxcontainer
未解决问题:
1. 接口内如何实现非标准类型,如何把IMapcontrol的接口作为参数传进去?
2.