提问人:user3256556 提问时间:11/8/2023 最后编辑:user3256556 更新时间:11/9/2023 访问量:92
#include C# 中的等效项,用于在程序的 C 和 C# 版本之间共享静态数据
#include equivalent in C# to share static data between a C and a C# version of a program
问:
我有一个 .h 文件,它是我在 C 程序中编写的,其中包含大量静态数据(大致如下:对于好奇的人来说,它是星坐标的目录)。#include
unsigned char const table[bignumber]={.....};
现在,我在多年来编写的许多 C 和 C++ 应用程序中使用相同的文件。有时我必须添加一些 s 来自定义它,但它本质上是一样的,这很棒,因为我可以轻松地在此文件中进行 1 次更改并更新 3 或 4 个应用程序。#define
现在我正在编写一个 C# 应用程序,我想重用同一个文件。有什么办法可以做到吗?
几天后更新...
显然没有办法在 C# 中做我想做的事:-(
我最终做的是使用我的一个包含数据的 C 程序来输出与数据等效的 C#......
数据大约是 40KB 的原始字节......在 C 中,这在我的代码中被编译为 const 数据,需要 40Kb...在加载程序文件时,加载数据(再次作为原始数据)时,加载数据不会产生运行时成本。
在我使用的嵌入式系统上,完全没有成本,因为它只是在闪存中,可以直接读取...... 在 C# 中,我最终不得不声明在启动时实例化的表,这些表本身将从运行时实例化的对象构建 (object[] var= new []{new object(...),....})...
最终结果是,我的代码增长了近 500kb,包含了 40kb 的数据!!!而且我猜还有不可忽视的启动时间成本......难怪现代程序如此庞大和缓慢:-(
感谢您的指点。.
西里尔语
答:
您可以将 C 标头转换为 C# 文件,然后使用它。有多种工具可供选择,例如这个: https://www.ispirer.com/application-conversion/c-c-to-cs-migration
现在,如果更改 C 文件,可能还需要自动更改 C#,这可能是在部署期间自动执行的步骤。
或者,您可以创建一个 DLL 并使用它,例如,请参阅 https://www.microsoft.com/en-us/download/details.aspx?id=55979。也可以重新生成和重写 DLL。
构建 DLL 似乎是个好主意,因此如果有多个项目和应用程序使用它,那么他们可以将其刷新到构建过程中。
评论
.dll
DllImport
#define
评论