leafcxy


  • 首页

  • 归档

  • 标签

CS0006未能找到元数据文件

发表于 2025-07-22 09:46:18
字数统计 128

在不同的解决方案中把一个项目搬来搬去,终于出现了传说的CSC : error CS0006。

编译的时候总是提示一个引用中不存在的项找不到元数据文件。

无论怎样删除项目,删除引用都没法通过生成。

阅读全文 »

csharp中的析构函数

发表于 2025-07-22 09:23:53
字数统计 615

析构函数

析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。

以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数,它也不进行任何操作。所以许多简单的类中没有用显式的析构函数。

阅读全文 »

csharp互操作

发表于 2025-07-22 09:15:46
字数统计 984

Platform Invoke(P/Invoke),即平台调用,主要用于调用C库函数和Windows API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
using System;

// 使用平台调用技术进行互操作性之前,首先需要添加这个命名空间
using System.Runtime.InteropServices;

namespace 平台调用Demo
{
    class Program
    {
        // 在托管代码中对非托管函数进行声明,并且附加平台调用所需要属性
        // 在默认情况下,CharSet为CharSet.Ansi
        // 指定调用哪个版本的方法有两种——通过DllImport属性的CharSet字段和通过EntryPoint字段指定
        // 在托管函数中声明注意一定要加上 static 和extern 这两个关键字        [DllImport("user32.dll")]
        public static extern int MessageBox1(IntPtr hWnd, String text, String caption, uint type);

        // 在默认情况下,CharSet为CharSet.Ansi
        [DllImport("user32.dll")]
        public static extern int MessageBoxA(IntPtr hWnd, String text, String caption, uint type);

        // 在默认情况下,CharSet为CharSet.Ansi
        [DllImport("user32.dll")]
        public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

        // 第一种指定方式,通过CharSet字段指定
        [DllImport("user32.dll", CharSet = CharSet.Unicode)]
        public static extern int MessageBox2(IntPtr hWnd, String text, String caption, uint type);

        // 通过EntryPoint字段指定
        [DllImport("user32.dll", EntryPoint="MessageBoxA")]
        public static extern int MessageBox3(IntPtr hWnd, String text, String caption, uint type);

        [DllImport("user32.dll", EntryPoint = "MessageBoxW")]
        public static extern int MessageBox4(IntPtr hWnd, String text, String caption, uint type);
        static void Main(string[] args)
        {
            // 在托管代码中直接调用声明的托管函数
            // 使用CharSet字段指定的方式,要求在托管代码中声明的函数名必须与非托管函数名一样
            // 否则就会出现找不到入口点的运行时错误
            //MessageBox1(new IntPtr(0), "Learning Hard", "欢迎", 0);
            
            // 下面的调用都可以运行正确
            //MessageBoxA(new IntPtr(0), "Learning Hard", "欢迎", 0);
            //MessageBox(new IntPtr(0), "Learning Hard", "欢迎", 0);
            
            // 使用指定函数入口点的方式调用
            //MessageBox3(new IntPtr(0), "Learning Hard", "欢迎", 0);

            // 调用Unicode版本的会出现乱码
            MessageBox4(new IntPtr(0), "Learning Hard", "欢迎", 0);
        }
    }
}
阅读全文 »

不能在控制元件上呼叫Invoke

发表于 2025-07-22 09:13:36
字数统计 271

在Window窗體程式開發的時候,如果使用多執行緒程式設計,在子執行緒中訪問主執行緒窗體內的控制元件,就需要使用控制元件的Control.Invoke方法或者BeginInvoke方法。但是有時候因為Window執行速度太快,尤其是你寫程式碼的時候在InitializeComponent();完成之前起了一個執行緒去執行某些操作,涉及到窗體控制元件的,當你在呼叫Control.Invoke的時候,就可能出現 “在建立視窗控制代碼之前,不能在控制元件上呼叫 Invoke 或 BeginInvoke

阅读全文 »

tesseract使用

发表于 2025-07-21 17:34:25
字数统计 760

怎么开始使用?

  • Q:这个开源库要怎么开始使用?https://github.com/tesseract-ocr/tesseract
阅读全文 »

使用CustomEvent polyfill来触发自定义事件

发表于 2025-07-21 14:18:57
字数统计 229

下面是一个完整的示例,展示了如何在ES5环境中使用CustomEvent polyfill来触发自定义事件:

阅读全文 »

git无法签出代码

发表于 2025-07-21 14:16:50
字数统计 209

Q: 在Windows10上使用git clone代码的时候抛出了异常,重试了几次都是相同的错误:下载的目录里除了.git没有任何东西。

阅读全文 »

sqlite删除记录后数据库文件大小不变

发表于 2025-07-19 10:57:26
字数统计 857

最的做的项目中要有到sqlite数据存储,写了测试程序进行测试,存入300万条记录,占用flash大小为 86.1M,当把表中的记录全部删除后发后数据库文件大小依然是 86.1M;

原因是: sqlite采用的是变长纪录存储,当你从Sqlite删除数据后,未使用的磁盘空间被添加到一个内在的”空闲列表”中用于存储你下次插入的数据,用于提高效率,磁盘空间并没有丢失,但也不向操作系统返回磁盘空间,这就导致删除数据乃至清空整个数据库后,数据文件大小还是没有任何变化,还是很大

阅读全文 »

sqlite获取插入id的几种方式

发表于 2025-07-19 10:48:46
字数统计 195

SQLite 中,表设置自增列后,可通过如下几种方式获取插入记录的 ID

sqlite_sequence

1
2
insert into TbTest(Name, Age) values('usr', 20);
select seq from sqlite_sequence where name='TbTest';
阅读全文 »

ComputeStringHash错误解决办法

发表于 2025-07-19 10:46:20
字数统计 275

用 ILSPY 或者 .NET Reflector 、dnspy 等反编译出来之后 文件由于语法不符合已经被丢弃了,

所以在反编译工具里面找到这个类,手动复制出来,新建一个类,把尖括号等去掉,方法就只保留 ComputeStringHash 方法就行了。

再在报错的地方也把尖括号去掉。

这个方法原本是一个string类型的switch,switch本身就要计算hash来判断,但是反编译工具对这个的解析出了问题,

阅读全文 »
1 … 4 5 6 … 8
leafcxy

leafcxy

I can't tell you

72 日志
44 标签
GitHub E-Mail
© 2018 - 2025 leafcxy
由 Jekyll 强力驱动
主题 - NexT.Pisces