c++-c数据类型 如何转换为.net 数据类型

问题描述

c数据类型 如何转换为.net 数据类型
//服务器登录地址
struct SERVADDR
{
char* m_szSerIp[IPADDR_MAXLEN]; // 定义了一个数组, 里面存储的是char 类型的指针
unsigned short m_nPort;
};

struct MULSERVADDR
{
int m_nProxyType; //代理类型
char m_ucTimeOut; //如果为1就是需要用户验证 如果为0不需要用户验证

char m_szUserName[USERNAME_MAXLEN]; //其中的szUserName为代理用户名 USERNAME_MAXLEN 代表首地址
char m_szUserCode[USERPWD_MAXLEN]; //szUserCode为代理用户密码
SERVADDR m_ProxyAddr;
int m_nNum; //下列地址数目
SERVADDR m_ServAddr[1]; //定义了一个 SERVADDR 数组
};

我想把这两个c 结构体对应成 .net 的两个结构体,


在世界调用的时候 包参数错误,具体是

它 在6 偏移位置包含一个偏移对象字段对象

有没有哪个大神帮我 把这两个结构体转换成.net 数据类型

解决方案

别用fieldoffset,人家有没有用union

解决方案二:
char* m_szSerIp[IPADDR_MAXLEN]; // 定义了一个数组, 里面存储的是char 类型的指针
对应C#应该是一个字符串,而不是字符串数组

解决方案三:
最直接的方法,还是按成员来赋值,这样无论如何都不会出错的。
不建议整个结构体来操作,特别是在使用两种语言的情况下。

解决方案四:
你知道C++的struct 的对齐是多少?

解决方案五:
如果要实现C/C++代码与C#之间的功能协作,会采用dll方式将C/C++代码封装成dll,然后在C#代码中调用dll:
///////////////////////////////////////////////////////////////////////////////////

[DllImport(""XORDll.dll""

EntryPoint = ""OutEncrypt""

CharSet = CharSet.Ansi

CallingConvention = CallingConvention.StdCall)

]

   public static extern int OutEncrypt(string FilePath string SecretWord); 

////////////////////////////////////////////////////////////////////////////////////////

详细方法参看我的博客文章:
http://blog.csdn.net/qq2399431200/article/details/9173045

   至于你遇到的问题,可以采用上述方法,写一些适配函数,将C/C++格式的数据通过dll中的C/C++函数转换成C#支持的数据类型。这样就用到了设计模式的里面的Adapter模式。

/////////////////////////////////////////////////////////////////////////////

C/C++语言数据类型与C#数据类型对照表,参看如下:

http://www.cnblogs.com/mountain-mist/archive/2009/08/13/1545483.html

http://blog.csdn.net/lybwwp/article/details/8168888

时间: 2024-11-09 00:19:02

c++-c数据类型 如何转换为.net 数据类型的相关文章

c#-C#数据类型与.net framework数据类型 ?求解!

问题描述 C#数据类型与.net framework数据类型 ?求解! 刚学习C#,遇到这个问题: 看到这句描述 "C#认可的基础数据类型并没有内置于C#语言中,而是内置于.net Framework中." 为什么"C#认可的基础数据类型并没有内置于C#语言中"?是不是说C#没有自己的基本数据类型呢? C语言就有内置基本数据类型,可是C++和C#和C语言不是兼容的吗?怎么连基本数据类型都不一样呢? "C#没有内置基本数据类型"这样的设计是为什么呢

JNI/NDK开发指南(三)——JNI数据类型及与Java数据类型的映射关系

        转载请注明出处:http://blog.csdn.net/xyang81/article/details/42047899        当我们在调用一个Java native方法的时候,方法中的参数是如何传递给C/C++本地函数中的呢?Java方法中的参数与C/C++函数中的参数,它们之间是怎么转换的呢?我猜你应该也有相关的疑虑吧,咱们先来看一个例子,还是以HelloWorld为例: HelloWorld.java: package com.study.jnilearn; cl

php 数据类型:php中的数据类型

 数据类型 PHP 只有整数.浮点数(或称实数.双精度数)和字符串三种基本数据类型.字符串可用单引号和双引号,但有不同的含义:只有双引号内可以使用变量.变量 变量的前面要加"$",使用变量不需要事先说明(或定义)变量的类型,不同类型的数据可对同一变量赋值.但若要使用全局变量须用 global 说明(或将其加入 $GLOBALS[] 数组).使用静态变量要用 static 说明.数组 使用数组并不需要说明它的类型和尺寸,可直接使用.同一数组的各元素可以有不同的数据类型.运算符大体上保留了

Access 数据类型与 MS SQL 数据类型的相应

access|数据|数据类型 文本 nvarchar(n) 备注 ntext 数字(长整型) int 数字(整型) smallint 数字(单精度) real 数字(双精度) float 数字(字节) tinyint 货币 money 日期 smalldatetime 布尔 bit

C#难点逐个击破(6):C#数据类型与.net framework数据类型_C#教程

其中有<Java程序设计教程>是一个美籍华人的作品,还有Nicholas C.Zakes的<Javascript高级程序设计>,还有就是这本Illustrator C# 2008,中文译为"插图详解C#2008",实际上插图不是很多.这是我第一次完整的读原版书,感慨良深.一是我的英文居然还可以,想当初考六级还差了20多分,–!!二是老外写书真的是用心在写,对待自己的书就像对待自己的孩子一样. 以上是闲话,之前一直很想知道.net framework数据存储类型在

Access 数据类型与 MS SQL 数据类型的相应_MsSql

文本 nvarchar(n)  备注 ntext  数字(长整型) int  数字(整型) smallint  数字(单精度) real  数字(双精度) float  数字(字节) tinyint  货币 money  日期 smalldatetime  布尔 bit 

asp.net 强数据类型 asp.net 强数据类型

关于上次说的强类型dataset中事务问题的解决办法,也实用于一般的事务解决方案 TransactionScope 类提供一个简单方法,通过这一方法,您不必与事务本身交互,即可将代码块标记为参与某个事务.事务范围可以自动选择和管理环境事务.由于它易于使用并且效率很高,因此建议您在开发事务应用程序时使用 TransactionScope 类. 此外,您不必显式向事务登记资源.任何 System.Transactions 资源管理器(例如 SQL Server 2005)都可以检测到该范围创建的环境

【题库】Oracle开发类笔试面试题集

[题库]Oracle开发类笔试面试题集 http://www.cnblogs.com/shenxiaolin/p/5517834.html 一.涉及内容 游标的创建与应用 二.具体操作  (一)填空题 1.PL/SQL 程序块主要包含3个部分:声明部分.(执行部分 ).异常处理部分. 2.自定义异常必须使用(RAISE )语句引发. (二)选择题 1.下列哪一个不是BOOLEAN变量可能的取值?(D ) A.TRUE  B.FALSE  C.NULL D.BLANK 2.请查看以下IF语句: D

ORACLE基本数据类型总结

     ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型.数字类型.日期类型.LOB类型.LONG RAW& RAW类型.ROWID & UROWID类型. 在讲叙字符串类型前,先要讲一下编码.字符串类 型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB) 两种.数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块