求高手解决c#平台调用的数据封送问题

jgdai2008 2010-09-28 11:02:38
现在我需要在c#中调用一个外部dll文件的函数。代码如下:

c++的dll文件中的原函数:
typedef void (__stdcall *fp_SETUPdllTYPE)(long &,char*,char*,char*,long &,char*,long ,long ,long ,long );

我在c#中的调用代码:
[DllImport("refprop.dll")]
private extern static IntPtr SETUPdll(ref int l1, StringBuilder s2,
StringBuilder s3, StringBuilder s4, ref int l5, StringBuilder s6, int l7,
int l8, int l9, int l10);

int i=1, ierr=5;

StringBuilder hf = new StringBuilder("nitrogen.fld");
StringBuilder hrf = new StringBuilder("DEF");
StringBuilder herr = new StringBuilder("NO");
StringBuilder hfmix = new StringBuilder("hmx.bnc");

SETUPdll(ref i, hf, hfmix, hrf, ref ierr, herr, 20000, 255, 3, 255);

目前无法运行,不知道什么问题,请高手指点,小弟跪求
...全文
119 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixiaocaohen 2010-10-23
  • 打赏
  • 举报
回复
没用过呢,帮你顶下吧,加油,开心每一天
《Visual C#2008开发经验与技巧宝典》及其配套光盘使用完整的源代码列举了800余条实用性极强的针对网站设计人员和数据库开发人员的Visual C# 2008编程技巧,旨在帮助广大读者快速解决实际开发过程中面临的诸多问题,从而提高程序开发效率、拓展软件应用领域。全书内容涵盖了大量的Visual C#2008编程新技术和新理念,包括LINQ在SQL、Data Set、XML和Object等领域的实际应用,WPF动画界面设计,WCF多层数据架构通信、泛型应用、XML文件处理、多线程管理、程序异常拦截、文件压缩及解压缩、文件加密和解密、文件访问权限、API函数调用、指针调用数据更新并发冲突处理、数据批量导入导出、Web服务、MS Report Viewer报表开发、水晶报表设计、母版页、主题及皮肤、导航菜单、成员资格、角色管理、缓存策略、Web Parts、Grid View和List View个性化定制、AJAX局部页面刷新方案以及大量的异步调用编程技巧等。为了突出编程技巧的实用性和简洁性,《Visual C#2008开发经验与技巧宝典》在演示或描述编程技巧时,力针对性地解决问题,尽量减少和避免问题的复杂化。由于篇幅限制,《Visual C#2008开发经验与技巧宝典》文字部分只给出与此技巧密切相关的关键代码,完整的源代码请参考配套光盘。《Visual C#2008开发经验与技巧宝典》最适于用作网站设计人员和数据库开发人员使用Visual C# 2008开发项目的案头参考书,无论是编程初学者还是编程高手,《Visual C#2008开发经验与技巧宝典》都极具参考和收藏价值。
呵呵,关键自己程序里要用到 所以开发了这个小功能 很多地方很粗糙,俺菜鸟,高手们就别贬我了。 使用的时候把2个dll放到你的程序目录,在资源管理器引用LOADing.dll 就可以了,DevComponents.DotNetBar2.dll为确定按钮控件的引用 列子: private void dl_Click(object sender, EventArgs e) { LOADing.FORMshow load = new LOADing.FORMshow(); load.showto(this, delegate { hand(new object[] { load, "正在处理数据" }); },false); } private void hand(object fr) { int i = 0; while (i < 100) { i++; ((LOADing.FORMshow)((object[])(fr))[0]).send((string)((object[])(fr))[0]+i.ToString()); System.Threading.Thread.Sleep(100); } } 主要用于处理数据的时候,提示用户处理过程,防止界面假死,数据处理完毕后会自动关闭窗体。 注:this为所要调用等待窗体的主窗体对象,中间为数据传递的委托,显示数据处理的过程.load.showto(this, delegate { hand(new object[] { load, "正在处理数据" }); });中new object[] 第一个参数一定要为固定的参数:创建LOADing.FORMshow的实例,后面再就可跟任意数据,都可在方法的过程中调用显示,最后的bool参数:false方法函数执行完毕后自动关闭窗体显示;true为方法执行完毕后出现确定按钮并阻塞主线程UI,点击确定后关闭提示窗体并取消阻塞线程,这么简单,用相信大家都会用了。 界面没有进行美化,感觉这样的就可以了,随后会升级为可自定义界面! 有问题加我QQ76230454

1,979

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 其他语言讨论
社区管理员
  • 其他语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧