我正在用 C# 编写一个 GUI 工具来解析和显示另一个用 C 编写的程序的数据输出。为了解析数据,我需要知道在许多 C 头文件中指定的数据结构。因此,我需要将这些 C 头文件合并到我的 C# 项目中。我的问题是:
1)经过一些研究,我得出结论,最好的方法是在我的解决方案中创建一个新的 C++/CLI 项目,将 C 头文件导入这个新项目,编写一些 C++/CLI 类作为数据的瘦包装器C 头文件中定义的结构,然后从 C# 代码引用 C++/CLI 包装类。这是最好的方法,还是有更好的方法?
2)我遇到了一个参考问题。这是我的简化代码来说明问题:
C++/CLI 项目中的原始 C 头文件
#define ABC 0x12345
C++/CLI 项目中的包装类
#include "my_c_header.h"
namespace C_Wrappers {
public ref class MyWrapper {
public:
property unsigned int C_ABC {
unsigned int get() { return ABC; }
}
}
}
C# 项目中的用户类
using C_Wrappers;
using System;
namespace DataViewer {
public partial class MainForm : Form {
private MyWrapper myWrapper = new MyWrapper();
public MainForm() {
Console.WriteLine(myWrapper.C_ABC.ToString());
}
}
}
在 C# 项目中,我添加了对 C++/CLI 项目的引用(使用右键单击 > 添加引用)。在构建期间,我在 C# 项目中遇到错误:“找不到类型或命名空间 'C_Wrappers'(您是否缺少 using 指令或程序集引用?)。”
我以为我做了我应该做的一切。我应该怎么做才能修复这个错误?