问题情景: 1、数据库访问的底层操作,我是自己写的数据库类,语言C++ ,用到了stl中的vector,string
2、web page用的是C# 问题: C#中,如何调用C++的内容,C++中的函数,我知道用dllimport的方式,可以将dll导入使用,可是对于在C++中,自己定义的类,如何在C#中使用呢?? 希望的解决方式: 给出C#调用C++的部分代码,其中C++中,用到了vector,string,是自己定义的类,以及结构体此外的我的数据库操作有多个类
底层:数据库操作类
中间:数据表映射类(多个)
上层:统一封装接口类,所以怎么封装比较好呢?本人初次接触这个问题,请尽量详细点吧,觉得分不够,可以另外开贴送分。
2、web page用的是C# 问题: C#中,如何调用C++的内容,C++中的函数,我知道用dllimport的方式,可以将dll导入使用,可是对于在C++中,自己定义的类,如何在C#中使用呢?? 希望的解决方式: 给出C#调用C++的部分代码,其中C++中,用到了vector,string,是自己定义的类,以及结构体此外的我的数据库操作有多个类
底层:数据库操作类
中间:数据表映射类(多个)
上层:统一封装接口类,所以怎么封装比较好呢?本人初次接触这个问题,请尽量详细点吧,觉得分不够,可以另外开贴送分。
对了,里面设计的stl的东西,怎么办,也能完全解决么?
《深入解析ATL》可以解决你的问题.
不过就你的问题来看,这样做工作量不小,还不如把接口改成基本数据类型.方便使用
由于牵涉到数据库操作,会涉及返回数据集,所以很难全部用基本类型,另外数据集还是自定义的不是mfc的东西,痛苦的等答案
http://www.pinvoke.net/default.aspx/netapi32/NetShareEnum.html
有一票例子,你对照C++的头文件中的函数原形和类型看下就好,
应该是windows.h 系统api.
另外,数据集是一个比较复杂的类,还提供了不少方法,如果,拼成xml串,那解析都很痛苦
帅哥们,还有什么好的方法啊?
3楼才是正确的办法.C++的com组件写的合理的话,注册后,一个右键引用就能使用.
object,
uuid("E6A596F0-01DB-4D35-83FD-C5FD09F21696"),
dual, helpstring("IEeaCli Interface"),
pointer_default(unique)
]
__interface IEeaCli : IDispatch
{
HRESULT Create ( [in] BSTR src_filename,[out,retval] BSTR * stb_filename );
HRESULT Open ( [in] BSTR stb_filename );
HRESULT SetClientID ( [in] BSTR clientid );
HRESULT GetClientID ( [out,retval] BSTR *clientid );
HRESULT SetHashCode ( [in] BSTR hashcode );
HRESULT GetHashCode ( [out,retval] BSTR * hashcode );
HRESULT SetTargetPath ( [in] BSTR src_file_name );
HRESULT GetTargetPath ( [out,retval] BSTR * src_file_name );
HRESULT GetTargetFileInfor([out,retval] IEeaFileInfo** ifinfo );
HRESULT SetTargetFileInfor([in] IEeaFileInfo * ifinfo );}; 你使用标准的com ,在注册后,用vs的添加引用-->com引用就可以.我说的那个写成函数库自己写封送那太罗嗦了,封送没个统一的标准,100人封100个样出来.
我有一个解决方案。
用c++ cli 建立一个中间工程。 通过c++ cli 去调用native cpp。