二次开发问题汇总【C#】

1未将对象引用到实例。

接口函数的参数不对。解决办法【用fixed去限制数组长度】

unsafe public struct VCI_BOARD_INFO
{
    public UInt16 hw_Version;
    public UInt16 fw_Version;
    public UInt16 dr_Version;
    public UInt16 in_Version;
    public UInt16 irq_Num;
    public byte can_Num;
    public fixed byte str_Serial_Num[20];
    public fixed byte str_hw_Type[40];
    public fixed byte Reserved[8];
}

2试图加载格式不正确的程序。

CPU类型选X64或X86【二选一】

另外dll文件放入Debug文件内。

3 函数无反应【软件闪退】

函数的参数不对。

不可以将byte数组改char数组,【因为影响到函数签名了。】

4万能参数:

只要是参数就会占用bit

万能参数

 public struct VCI_BOARD_INFO //主板信息
{ 
    bool i;
    
}


       public struct VCI_BOARD_FIND2 //主板信息
       {
           byte i;
          

       }

  然后用这个参数去测试接口函数。 

5尝试读取或写入受保护的内存:

原因:接口函数的参数错误【需要定义正确的参数】 

6获取DLL文件函数名:

在C#中,可以使用反射机制获取DLL文件中的所有函数名。具体步骤如下:

1.使用Assembly类的LoadFile方法加载DLL文件,获取Assembly对象。

2.使用Assembly对象的GetTypes方法获取DLL文件中所有的类型。

3.遍历所有类型,使用Type对象的GetMethods方法获取该类型中的所有方法。

4.遍历所有方法,使用MethodInfo对象的Name属性获取方法名。

以下是获取DLL文件中所有函数名的示例代码:
using System;
using System.Reflection;

namespace GetFunctionsFromDll
{
    class Program
    {
        static void Main(string[] args)
        {
            // 加载DLL文件
            Assembly assembly = Assembly.LoadFile(@"D:\Test.dll");

            // 获取所有类型
            Type[] types = assembly.GetTypes();

            // 遍历所有类型
            foreach (Type type in types)
            {
                // 获取该类型中的所有方法
                MethodInfo[] methods = type.GetMethods();

                // 遍历所有方法
                foreach (MethodInfo method in methods)
                {
                    // 输出方法名
                    Console.WriteLine(method.Name);
                }
            }
        }
    }
}


7

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值