c#初学,调用c的dll
c的头文件extern "C" void _export _stdcall get_one_yc(int fac, int yc_dot, float *yc_value);
c#调用我这样写
public class DllTest
{
[DllImport("BaseDll.dll")]
private extern static void get_one_yc(int fac, int yc_dot, float *yc_value);
}
提示“指针和和固定大小缓冲区只能在不安全的上下文中使用”,我这样写对吗,要怎么改,之后要如何用这个函数,帮忙写写吧,多谢了 dll --------------------编程问答-------------------- http://blog.csdn.net/lujunql/article/details/6961308 --------------------编程问答-------------------- 项目属性-生成-把运行不安全代码勾上
函数声明前加上unsafe
[DllImport("BaseDll.dll")]--------------------编程问答-------------------- 还是不太明白,但是照葫芦画瓢写了如下,还是有问题,再帮忙看看吧
unsafe private extern static void get_one_yc(int fac, int yc_dot, float* yc_value);
private void button1_Click(object sender, EventArgs e)
{
fff = Convert.ToInt32(textBox1.Text, 10);
ddd = Convert.ToInt32(textBox2.Text, 10);
unsafe
{
DllTest.get_one_yc(fff, ddd, &vvv);
}
textBox3.Text = vvv.ToString();
}
提示【只能获取 fixed 语句初始值设定项内的未固定表达式的地址】
要怎么写,多谢了 --------------------编程问答-------------------- &vvv提示错误【只能获取 fixed 语句初始值设定项内的未固定表达式的地址】 --------------------编程问答-------------------- [DllImport("BaseDll.dll")]
private extern static void get_one_yc(int fac, int yc_dot, ref float yc_value);
使用 ref --------------------编程问答-------------------- 差不多了,但是调用的时候显示
【无法加载 DLL“BaseDll.dll”: 找不到指定的模块。】
这句话的意思是找不到dll?还是找不到dll里面要调用的函数? --------------------编程问答-------------------- basedll.dll考到debug目录下 --------------------编程问答-------------------- 考了,还是没用 --------------------编程问答-------------------- 初学c#干嘛要调用c的dll呢,我嚼着要这么看不起c#就没必要学了。
补充:.NET技术 , C#