当前位置:编程学习 > C#/ASP.NET >>

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里面要调用的函数? --------------------编程问答--------------------
引用 6 楼 wwwrain 的回复:
差不多了,但是调用的时候显示
【无法加载 DLL“BaseDll.dll”: 找不到指定的模块。】
这句话的意思是找不到dll?还是找不到dll里面要调用的函数?
basedll.dll考到debug目录下 --------------------编程问答-------------------- 考了,还是没用 --------------------编程问答-------------------- 初学c#干嘛要调用c的dll呢,我嚼着要这么看不起c#就没必要学了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,