首页 新闻 会员 周边 捐助

c语言封装成的动态链接库 移植到C# 调用 函数指针怎么处理???急急急

0
悬赏园豆:5 [已解决问题] 解决于 2012-12-18 09:13

这是那个错误

 

我插入了这段话 就不能调用了

 


extern "C" __declspec(dllexport)
 int Add(int x, int y) 
{
 int *z;
 *z= 100;
 printf("%d",*z);
 return x + y;
}

 

涂红是加的这句话 就报错了。

哪位大虾指导下

问题补充:

 [DllImport("test2.dll")]
        public static extern int Add(  int x, int y);

 

 

这是要调用的dll库 ,如果是,是这么掉用吗

yujinchao的主页 yujinchao | 菜鸟二级 | 园豆:248
提问于:2012-12-13 09:47
< >
分享
最佳答案
0

看不到图片,另外,从你的代码中没看到你提到的函数指针,只是看到你这段代码有个错误:

int *z; // 没有分配内存

*z= 100;//你正在尝试向一个未知区域写入一个int型数据,运行时会提示你访问冲突。

改成这样:

int *z = new int;

*z = 100;

printf("%d",*z);

delete z;

return x+y;

收获园豆:5
Launcher | 高人七级 |园豆:45050 | 2012-12-13 09:56

 

 [DllImport("test2.dll")]
        public static extern int Add(  int x, int y);

 

 

这是要调用的dll库 ,如果是,是这么掉用吗

yujinchao | 园豆:248 (菜鸟二级) | 2012-12-13 10:15

@yujinchao: 写的没错,有几个注意点:

1,CallingConvention 的设置,你可以将几个值都尝试下;

2,EntryPoint,可以用depends.exe查看下导出函数的名称是否为 Add;

Launcher | 园豆:45050 (高人七级) | 2012-12-13 10:20

@Launcher: 如果有大量的函数指针,C#调用会怎么办,还会有报错的可能吗?  毕竟c语言面向过程的。c#是面向对象。

yujinchao | 园豆:248 (菜鸟二级) | 2012-12-13 10:27

@yujinchao: 

1,我从你的代码中看不到函数指针,你能给出你使用函数指针的例子吗?

2,是否会报错,跟你面向过程和面向对象无关;

Launcher | 园豆:45050 (高人七级) | 2012-12-13 10:37

@Launcher: 

 如果是函数指针的话,怎么办。这块我没例子。谢谢你的解答

yujinchao | 园豆:248 (菜鸟二级) | 2012-12-13 11:26
Launcher | 园豆:45050 (高人七级) | 2012-12-13 11:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册