在一个论坛里看到一个问题,感觉比较有意义,记录下:
“程序里面一个核心算法模块是用C++写的(遗传算法)而其他界面,数据库相关操作,三维二维显示都是在AE+c#做的。
不知道怎么把这两个结合在一起。
就是c#里面会将一些数据库里的数据传给C++模块,再从中获得计算结果数据。
感觉用文件太麻烦,但是c++和c#数据类型定义又不同。
另外觉得,是不是要把c++编成dll,还是直接两个写到一个解决方案里面?”
回答:
1.把C++的编译成DLL,在C#中是可以调用的。
2.在c++中把要处理的功能封装成导出函数,编译成dll,然后c#导入dll,声明前面的函数即可调用
3.把之前C++的算法,写成ATL,使用之前,注册一下。
C#调用的时候直接在引用里添加这个DLL就可以,跟使C#自己的DLL一样。
4.com,做一个COM的DLL
看了大家讨论,感觉这个问题比较有意义,C#和C++各有长处,混合编程貌似一直没真正用过,有时间体验一下,呵呵!