我现在用C#做了一个WINFORM的客户端
然后现在要通过一个中间件做为接口,与底层进行数据交换而这个中间件是一个用C++写成的DLL文件,不能直接在项目里引用加入
我看到网上说在C#文件里使用[Dllimport]然后再声明DLL文件中的方法但是现在我这个DLL文件中的方法全是在类里面,我如何使用这个类里的属性和方法呢?或者说把这个DLL封装成COM?那又如何封装呢?、各位大侠帮忙啊,网上搜了一天了,眼睛都快瞅瞎了
然后现在要通过一个中间件做为接口,与底层进行数据交换而这个中间件是一个用C++写成的DLL文件,不能直接在项目里引用加入
我看到网上说在C#文件里使用[Dllimport]然后再声明DLL文件中的方法但是现在我这个DLL文件中的方法全是在类里面,我如何使用这个类里的属性和方法呢?或者说把这个DLL封装成COM?那又如何封装呢?、各位大侠帮忙啊,网上搜了一天了,眼睛都快瞅瞎了
解决方案 »
- 怎么设置windows窗体关闭时执行的程序
- winform中的datagridview问题
- Ado.net 疑问
- 求教:Gridview 绑定datatable,随机数据展示,出错
- 帮忙设计一个datagridview中checkbox列
- [200分]数据库定时更新问题
- 用C#怎样拦截Close event,也就是当用户点击右上角的八叉时拦截那个event,然后不关闭程序,继续运行,就像MSN Messanger那样
- C#中怎么实现HTML对话框啊?
- 新手在线等,请问高手们如何在C#的winform中,ACCESS中插入数据到指定的地方和修改里面的内容(注:这里最好是同时可以插入到两个表中和同时
- 对NET的迷惑,请高人指教
- C# 判断控件是否是容器控件
- 什么叫位模式?
*********************************************************************
我也不是很清楚 给你转一个吧
[DllImport("Kernel32")] //读取动态库文件
public static extern int GetProcAddress(int handle, String funcname);
[DllImport("Kernel32")]
public static extern int LoadLibrary(String funcname);
[DllImport("Kernel32")]
public static extern int FreeLibrary(int handle);
[DllImport("HmPark.dll")] //声明C++中的接口函数, 其中 HmPark 为你的动态库文件名
public static extern double GetStdCharge(UInt32 time_In, UInt32 time_Out); private int huser32 = 0;
private void CountCharge()
{
double dCharge = 0;
try
{
huser32 = LoadLibrary("HmPark.dll"); //载入动态库
dCharge = GetStdCharge(time_In, time_Out); //调用 C++ 中的接口函数
}
catch (Exception ex)
{
MessageBox.Show("调用出错: " + ex.Message, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
try
{
Inspect.FreeLibrary(huser32); //释放动态库文件, 否则会弹出异常
}
catch (Exception ee)
{
MessageBox.Show("释放出错: " + ee.Message, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
http://blog.csdn.net/hjyhh/archive/2008/03/03/2142402.aspx
你说的这种方法我考虑过,确实是可以使用里面的函数
但是也还是有问题的,比如说我在这个DLL文件里定义了一个类,就叫MyTest吧
然后有函数的返回值就是这个类,这种的就不能直接使用吧