最近打算使用新思的触摸板开发包实现一个手势软件
整个SDK主要由以下几部分组成:
说明文档
样例代码
.dll动态链接库文件
.lib库文件
.h头文件
新思的SDK是已经有超过10年没有更新了,整个SDK只提供了C++和VB的接口
而我的软件使用的是C#编写的,这就涉及到一个问题,我怎样才能实现在C#中调用SDK呢?
第1种解决办法:
由于SDK提供了dll文件,我们可以直接使用DllImport将dll文件导入,然后再自己编写一个需要使用的函数接口
但这种办法有相当多的缺陷
一是每个接口函数都要自己写接口,相当繁琐
二是如果函数参数中涉及到指针等C++特有的变量类型时,要进行类型转换,而如果参数中使用了结构体和类的话,更是要自己重新编写结构体和类
总之,这种方法使用起来相当不方便,所以我放弃了
第2种解决办法:
使用managed C++
通过google和询问大牛,了解到托管代码这个概念(也就是managed C++)
托管代码是微软提供给我们,让我们能够在使用C#等开发语言时,能够调用原来C++代码的方法。
整个托管代码的框架是这样的:
托管C++负责调用原始的C++函数,而C#能够调用托管C++生成的dll
这样,托管C++成功的起到了一个桥梁的作用,把natvive C++和C#联系起来了。
大致操作过程如下:
新建一个C++ CLR类库工程
在这个类库中通过将原始的lib和头文件静态链接进来
再将自己想要实现的功能在这个类库中实现
生成dll动态链接库
最后在C#项目中添加引用,将这个动态链接库引用进去,就可以直接使用类库中的函数,实现自己想要的功能了。