c#初学,调用c的dll

wwwrain 2013-11-12 04:38:07
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);
}

提示“指针和和固定大小缓冲区只能在不安全的上下文中使用”,我这样写对吗,要怎么改,之后要如何用这个函数,帮忙写写吧,多谢了
...全文
315 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sswwee 2013-12-06
  • 打赏
  • 举报
回复
初学c#干嘛要调用c的dll呢,我嚼着要这么看不起c#就没必要学了。
卧_槽 2013-11-13
  • 打赏
  • 举报
回复
引用 6 楼 wwwrain 的回复:
差不多了,但是调用的时候显示 【无法加载 DLL“BaseDll.dll”: 找不到指定的模块。】 这句话的意思是找不到dll?还是找不到dll里面要调用的函数?
basedll.dll考到debug目录下
wwwrain 2013-11-13
  • 打赏
  • 举报
回复
差不多了,但是调用的时候显示 【无法加载 DLL“BaseDll.dll”: 找不到指定的模块。】 这句话的意思是找不到dll?还是找不到dll里面要调用的函数?
largeskymengsk 2013-11-13
  • 打赏
  • 举报
回复
[DllImport("BaseDll.dll")] private extern static void get_one_yc(int fac, int yc_dot, ref float yc_value); 使用 ref
wwwrain 2013-11-13
  • 打赏
  • 举报
回复
&vvv提示错误【只能获取 fixed 语句初始值设定项内的未固定表达式的地址】
wwwrain 2013-11-13
  • 打赏
  • 举报
回复
还是不太明白,但是照葫芦画瓢写了如下,还是有问题,再帮忙看看吧

        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 语句初始值设定项内的未固定表达式的地址】 要怎么写,多谢了
wwwrain 2013-11-13
  • 打赏
  • 举报
回复
考了,还是没用
  • 打赏
  • 举报
回复
项目属性-生成-把运行不安全代码勾上 函数声明前加上unsafe
        [DllImport("BaseDll.dll")]
        unsafe private extern static void get_one_yc(int fac, int yc_dot, float* yc_value);

110,499

社区成员

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

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

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