我插入了这段话 就不能调用了
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库 ,如果是,是这么掉用吗
看不到图片,另外,从你的代码中没看到你提到的函数指针,只是看到你这段代码有个错误:
int *z; // 没有分配内存
*z= 100;//你正在尝试向一个未知区域写入一个int型数据,运行时会提示你访问冲突。
改成这样:
int *z = new int;
*z = 100;
printf("%d",*z);
delete z;
return x+y;
[DllImport("test2.dll")]
public static extern int Add( int x, int y);
这是要调用的dll库 ,如果是,是这么掉用吗
@yujinchao: 写的没错,有几个注意点:
1,CallingConvention 的设置,你可以将几个值都尝试下;
2,EntryPoint,可以用depends.exe查看下导出函数的名称是否为 Add;
@Launcher: 如果有大量的函数指针,C#调用会怎么办,还会有报错的可能吗? 毕竟c语言面向过程的。c#是面向对象。
@yujinchao:
1,我从你的代码中看不到函数指针,你能给出你使用函数指针的例子吗?
2,是否会报错,跟你面向过程和面向对象无关;
@Launcher:
如果是函数指针的话,怎么办。这块我没例子。谢谢你的解答
@yujinchao: MSDN:http://msdn.microsoft.com/zh-cn/library/ektebyzx(v=VS.80).aspx