正文
包含c/svb.net的词条
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
关于c#调用c/c++的dll类型转换问题
C#调用C++编写c/svb.net的DLL函数各种参数传递问题
1.
不返回值c/svb.net的参数
C++
原型:
bool
SendNewSms(char
*szTel,
char
*szMessage);
C#引用;
[DllImport(
"CdmaCard.dll",EntryPoint="SendNewSms")]
public
static
extern
bool
SendNewSms(string
phone,string
msg);
2.
带返回值(char
*)
C++原型:
BOOL
GetCardErrorMessage(char
*szErrorMessage
,
int
errorCode);
C#引用
[DllImport(
"CdmaCard.dll",EntryPoint="GetCardErrorMessage")]
public
static
extern
int
GetCardErrorMessage(StringBuilder
msg,int
errorCode);
StringBuilder
buf
=
new
StringBuilder(1024);//指定c/svb.net的Buf大小必须大于可能c/svb.net的最大长度
GetCardErrorMessage(buf,1);
3.
带返回值(其c/svb.net他类型)
C++原型:
BOOL
GetSmsSaveStation
(int
*nSmsStation);
C#引用
[DllImport(
"CdmaCard.dll",EntryPoint="GetSmsSaveStation")]
public
static
extern
bool
GetSmsSaveStation(ref
int
nStation);
4.
传递结构体指针(C++填充)
C++原型:
struct
NET_INFO_STRUCT
{
DWORD
nDurationTime;
//持续时间
double
nReceiveByte;
//接收字节
double
nSendByte;
//发送字节
};
BOOL
NetGetConnectDetail(NET_INFO_STRUCT
*lpNetInfo);
C#引用
public
struct
NET_INFO_STRUCT
{
public
uint
nDurationTime;
//持续时间
public
double
nReceiveByte;
//接收字节
public
double
nSendByte;
//发送字节
}
[DllImport(
"CdmaCard.dll",EntryPoint="NetGetConnectDetail")]
public
static
extern
int
NetGetConnectDetail(ref
NET_INFO_STRUCT
pNetInfo);
NET_INFO_STRUCT
netInfo
=
new
NET_INFO_STRUCT();
NetGetConnectDetail(ref
netInfo);
5.
传递结构体数组(C++来填充)
C++原型:
struct
UIM_BOOK_STRUCT
{
int
UimIndex;
char
szName[15];
char
szPhone[21];
};
int
ReadUimAllBook(UIM_BOOK_STRUCT
lpUimBookItem[],int
nMaxArraySize);
C#引用
[StructLayout(LayoutKind.Sequential,
CharSet
=
CharSet.Ansi)]//可以指定编码类型
public
struct
UIM_BOOK_STRUCT
{
public
int
UimIndex;
[MarshalAs(UnmanagedType.ByValTStr,
SizeConst=
15)]
public
string
szName;
[MarshalAs(UnmanagedType.ByValTStr,
SizeConst=
21)]
public
string
szPhone;
};
[DllImport(
"CdmaCard.dll",EntryPoint="ReadUimAllBook")]
public
static
extern
int
ReadUimAllBook([Out]
UIM_BOOK_STRUCT
[]
lpUimBookItem,int
nMaxArraySize);
UIM_BOOK_STRUCT[]
p
=
new
UIM_BOOK_STRUCT[20];
int
ret
=
ReadUimAllBook(p,p.Length);
6.
注意问题
类型不一致,会导致调用失败,
(1)
long
类型,在C++中是4字节的整数,在C#中是8字节的整数;
(2)
字符串类型的设置不正确;
开机时提示加载C:/windows/system32/oljgzn63.dll失败另一个程序正在使用此文件进程无法访问
可能是这个dll因为某些原因(最大的可能是因为它的病毒,被杀软删除了)丢失了,但其相关的注册信息却还在,导致系统开机时还加载它,却又找不到它的文件,所以报错。
如果你点击“确定”后,系统没有什么不正常,并且可以正常运行的话,你可以用这个软件清理掉这个开机加载项,以后开机就不会出现这个信息了。
Autoruns:开机启动项管理
C/C、 C#/.NET、 VC++的区别
C/C++,C# 仅仅是 编程语言;C和C++还有一定的渊源,但C#除了名字带个字母C之外,跟C/C++ 没有任何关系,但跟Java互相借鉴对方有点,他们之间还是有相似之处的。C没有类的概念,C++兼容C语法。C#没有C/C++里流行的指针。C++和C#可以归类到面向对象的编程语言。
.NET 是一个Framework,提供了一个运行平台及提供了一组编程语言,C#是其中一种开发语言。
VC++ 是一个开发工具,即它是一个软件,提供了开发MFC(也是一个Framework)的IDE环境,当然,也可以开发纯C和C++,经典版本是vc6,但是对C++标准支持不好。
VB.NET学做C/S软件需要学习哪些知识?
我是 vb/asp 转 c#/MVC/WPF 的人,可能能给你一点指导
服务端和客户端 通常有两种方式,一种是 socket,一种是 http,
无非是 资料放到服务器(DataBase),通过接口(如http/socket),与 客户软件(如exe) 进行数据的交互。
先学一下 TCP/UDP 客户端、服务端
再学一下 HTTP(GET/POST)
关于c/svb.net和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。