C#怎样调用c编写的dll

cgstian 2009-04-17 10:57:58
C#怎样调用c编写的dll,dll中函数为 extern "C" void PASCAL EXPORT relation(int len,double *ch1,double *ch2,double *data);
ch1 ch2 data 都是数组
那么在c#中该写怎样一个函数?
各位高手快帮忙啊
...全文
119 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cgstian 2009-04-19
  • 打赏
  • 举报
回复
高手快帮忙啊,在线等
cgstian 2009-04-19
  • 打赏
  • 举报
回复
大哥,你QQ多少?我的是304903797,在这上面说不清楚啊
abrahu 2009-04-19
  • 打赏
  • 举报
回复
1.把你编译好dll文件放到C#程序的bin/debug/文件夹下。
2.[DllImport("yourdllname.dll")]
public static extern void relation(int len,ref double ch1,ref double ch2,ref double data);
或者像一楼说的那样
public static extern void relation(int len, double[] ch1, double[] ch2, double[] data);
我没有试,你试一下。
3.然后就可以用了。
cgstian 2009-04-19
  • 打赏
  • 举报
回复
我自己顶啊,一直在线等,怎么没人帮呢?
cgstian 2009-04-19
  • 打赏
  • 举报
回复
高手们快帮帮忙啊,我QQ304903797,
cgstian 2009-04-19
  • 打赏
  • 举报
回复
一楼的大哥,这样调用不成功啊,说是找不到指定的模块啊
蓝海D鱼 2009-04-18
  • 打赏
  • 举报
回复
如果是非托管的,就用DllImport,举例
using System;
using System.Runtime.InteropServices;
class MainApp
[DllImport("Kernel32")] //读取动态库文件
public static extern int GetProcAddress(int handle, String funcname);

给你讲一下我的经验:
首先 你在C#中调用的 是C++ 写的一个动态库。比如Kernel32.dll 中的 函数;
这个函数用C++写 有如下要求:
1、 必须为全局函数
2、 函数参数 必须为基本类型,也就是C++ 和C#都有的类型,否则你在public static extern int GetProcAddress(int handle, String funcname);
这里没有办法声明。 其余的 没什么了;

还有你可以参考这里:http://blog.csdn.net/jingshuaizh/archive/2009/02/04/3862019.aspx
justin麒麟 2009-04-18
  • 打赏
  • 举报
回复
直接在项目里载入DLL文件怎么样?
xufzu123 2009-04-18
  • 打赏
  • 举报
回复

using System.Runtime.InteropServices;
[DllImport("xxx.dll")]
static extern void relation(int len, double[] ch1, double[] ch2, double[] data);

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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