c++ # include在C#中的等效功能,用于在程序的C和C#版本之间共享静态数据

xmakbtuz  于 11个月前  发布在  C#
关注(0)|答案(1)|浏览(129)

我有一个.h文件,我在一个C程序中#include,它包含大量静态数据(沿着行:unsigned char const table[bignumber]={.....};的东西,出于好奇,它是一个星星坐标的目录)。
现在,我在多年来编写的许多C和C++应用程序中使用相同的文件。有时我必须添加一些#define来自定义它,但它本质上是相同的,这很棒,因为我可以轻松地在此文件中进行1次更改并更新3或4个应用程序。
现在我正在编写一个C#应用程序,我想重用这个文件。有什么方法可以做到这一点吗?
几天后更新……
显然没有办法在C#中做我想做的事情:-(
我最终做的是使用我的一个C程序,其中包括数据输出一个C#等效的数据.
数据大约是40 KB的原始字节.在C中,这在我的代码中被编译为const数据,占用40 Kb.
在我使用的嵌入式系统上,根本没有任何成本,因为它只是在flash中,打开直接阅读.在C#中,我最终不得不声明在启动时示例化的表,这些表本身将在运行时示例化的对象中构建(object[] var= new []{new object(...),...}).
最后的结果是,我的代码增长了近500 kb,包括40 kb的数据!!!!我猜,有不可忽视的启动时间成本也牵连...难怪现代程序是如此之大和缓慢:-(
谢谢你的指点。
Cyrille

sy5wg1nm

sy5wg1nm1#

您可以将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似乎是一个好主意,然后他们可以在构建过程中刷新它。

相关问题