读取在c++;由c# 我在MFC应用程序中创建共享内存,在C语言中使用相同的共享内存。因此,我想使用C++中使用的相同结构。 但当我在c#中声明结构时,它表明数组大小不能在变量声明中指定。 但我想知道在打开共享内存时结构的大小
在c++应用程序中:读取在c++;由c# 我在MFC应用程序中创建共享内存,在C语言中使用相同的共享内存。因此,我想使用C++中使用的相同结构。 但当我在c#中声明结构时,它表明数组大小不能在变量声明中指定。 但我想知道在打开共享内存时结构的大小,c#,struct,mfc,C#,Struct,Mfc,在c++应用程序中: struct TagModalDB { float IV [600]; //Mapped to SIMPACK VAR_I char FAIL [600]; //Mapped to SIMPACK MALF_I char FD [600]; //Mapped to SIMPACK REM_I floa
struct TagModalDB
{
float IV [600]; //Mapped to SIMPACK VAR_I
char FAIL [600]; //Mapped to SIMPACK MALF_I
char FD [600]; //Mapped to SIMPACK REM_I
float NCP [600];
float NLH [600];
float NENTH [600];
float NKVAL [30][600];
float NLEVEL [600];
.....
}; //Its very lengthy structure
CreateFileMapping( (HANDLE) 0xFFFFFFFF, (LPSECURITY_ATTRIBUTES) NULL, PAGE_READWRITE, 0, sizeof( struct TagModalDB ),"ModelDB" );
在C#应用中:
struct TagModalDB
{
float IV [600];
char FAIL [600];
char FD [600];
float NCP [600];
float NLH [600];
};
mmf = MemoryMappedFile.CreateOrOpen("ModelDB", Sizeof(TagModelDB) );
accessor = mmf.CreateViewAccessor(0, Sizeof(TagModelDB), MemoryMappedFileAccess.Read);
如何在c#中声明struct。我是新来的。
在VS2008开发的C++应用程序。对于c#应用程序,im使用vs2010。这就是如何定义c#
Structs的
为对象定义默认(无参数)构造函数是错误的
结构。在应用程序中初始化实例字段也是错误的
结构体只能通过使用
参数化构造函数或通过单独访问成员
声明结构后。任何私人或其他无法访问的
只能在构造函数中初始化成员
您可以使用如下代码:
using System;
public class Test
{
public static void Main()
{
// make the instance
TagModalDB test= new TagModalDB();
// initialize the arrays
test.intialize();
Console.WriteLine(test.IV[599]); // <= Will out 0 since default assignment of 0 to numberic types
}
}
// Your Struct
public struct TagModalDB
{
public float[] IV;
public char[] FAI;
public char[] FD;
public float[] NCP;
public float[] NLH;
// Here we initialize your arrays
public void intialize(){
IV=new float[600] ;
FAI= new char[600];
FD= new char[600];
NCP=new float[600];
NLH= new float[600];
}
}
使用系统;
公开课考试
{
公共静态void Main()
{
//举例说明
TagModalDB测试=新TagModalDB();
//初始化数组
test.initialize();
Console.WriteLine(test.IV[599]);//当我使用initialize()初始化结构变量时,结构的大小返回为24.int size=Marshal.SizeOf(typeof(TagModalDB))正如你提到的,我也没有得到价值。但是当声明结构不安全时,我使用了公共固定声明。它返回正确的大小12000,并且IM得到值。@ ANU数组是C类型中的引用类型。一个数组中的结构不包含数组元素-仅引用元素。C++结构与C语言有很大的不同。结构。关于C++的一件事是打包,就像在语法包中一样。你可能需要访问C++结构作为字节数组,并将每个数组(如IV)复制到相应的C数组。