社区
C#
帖子详情
C#程序调用c++的dll,怎样把dll中函数返回的数组赋值给c#程序中的数组
shanshui0121
2012-09-21 07:26:28
dll的函数是
char *A(char buf[])
{
char buffer[50]={};
return buffer;
}
C#中调用
char [] b =new char[50]{};
[DllImport("dll.dll")]
public static extern char A(char buf);
A(b);
怎么把buffer[50]中的数据在C#中读出来
...全文
310
8
打赏
收藏
C#程序调用c++的dll,怎样把dll中函数返回的数组赋值给c#程序中的数组
dll的函数是 char *A(char buf[]) { char buffer[50]={}; return buffer; } C#中调用 char [] b =new char[50]{}; [DllImport("dll.dll")] public static extern char A(char buf); A(b); 怎么把buffer[50]中的数据在C#中读出来
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
shanshui0121
2012-09-24
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
首先你的C代码就有问题,buffer是一个数组,而数组是保存在栈中的,你函数一返回就平栈了,那么buffer中的值很可能就已经变了。
第二,C#的函数声明应该是
[DllImport("dll.dll",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]
public static extern I……
[/Quote]
我的题目没写清楚
c++编写的dll中的函数:
static char buffer[50];
char *A(unsigned char buf[])
{
for(int i=0;i<50;i++)
{
buffer[i]=buf[50];
}
return buffer;
}
C#中调用:
byte [] b =new byte[50]{1,1,1,1,1,1,1,1,1};
[DllImport("dll.dll")]
public static extern char A(char buf);
char [50]a;
a=A(b);//有问题????
怎么把buffer[50]中的数据,赋值给C#中的a数组
qldsrx
2012-09-23
打赏
举报
回复
[DllImport("<Unknown>", EntryPoint="A")]
public static extern System.IntPtr A(byte[] buf) ;
bigbaldy
2012-09-23
打赏
举报
回复
首先你的C代码就有问题,buffer是一个数组,而数组是保存在栈中的,你函数一返回就平栈了,那么buffer中的值很可能就已经变了。
第二,C#的函数声明应该是
[DllImport("dll.dll",CharSet=CharSet.Ansi,CallingConvention=CallingConvention.Cdecl)]
public static extern IntPtr A(string buf);
取值用Marshal.PtrToStringAnsi(A(b));
shanshui0121
2012-09-23
打赏
举报
回复
c++编写的dll中的函数:
static char buffer[50];
char *A(unsigned char buf[])
{
for(int i=0;i<50;i++)
{
buffer[i]=buf[50];
}
return buffer;
}
C#中调用:
byte [] b =new byte[50]{1,1,1,1,1,1,1,1,1};
[DllImport("dll.dll")]
public static extern char A(char buf);
char [50]a;
a=A(b);//有问题????
怎么把buffer[50]中的数据,赋值给C#中的a数组
Pigeon汪
2012-09-23
打赏
举报
回复
可以用回调函数
mywayss
2012-09-22
打赏
举报
回复
怎么用啊
shanshui0121
2012-09-22
打赏
举报
回复
怎么用啊
null
2012-09-22
打赏
举报
回复
野指针
C#
调用
C++
DLL
传递结构体
数组
的终极解决方案
在
C#
调用
C++
DLL
过程
中
,遇到结构体、结构体
数组
或结构体指针的传递问题。由于
C#
与
C++
字节对齐规则不同,直接传递会导致异常或数据不正确。解决方案包括调整
C++
结构体的字节对齐,使用Marshaling在
C#
中
分配非托管内存,或者通过创建等大小的一维字节
数组
进行数据交互。通过这些方法,成功解决了
C#
与
C++
DLL
之间的结构体
数组
通信问题。
C#
与
C++
编写的
dll
调用
——double
数组
/一维/二维
这篇博客详细介绍了如何在
C#
中
调用
C++
编写的
DLL
,特别是针对double类型的
数组
,包括一维和二维
数组
的传递方式。作者通过示例代码展示了
C++
的double*和
C#
的double[]如何对应,并提到了在
C#
中
使用unsafe关键字处理指针操作的注意事项。此外,还讨论了在
C#
中
定义辅助
函数
来处理二维
数组
的传递,并给出了完整的可运行代码示例。
C#
调用
C++
dll
函数
传参及参数类型转换
本文详细介绍了在
C#
中
如何
调用
C++
编写的
dll
函数
,涉及到多种参数类型的转换,包括基本类型、字符串、
数组
等。通过实例展示了如何在
C#
中
声明和
调用
C++
的
dll
函数
,提供了有效的参数转换方法。
(已更新)关于混合编程
中
C#
调用
C/
C++
DLL
碰到具有
数组
、指针的参数或
返回
的解决办法(亲测)!
本文介绍了一种使用
C#
调用
C++
DLL
的方法,通过传递
数组
首元素实现共享内存,解决了混合编程
中
常见的问题。
C#
调用
C++的
dll
文件
该博客主要介绍
C#
调用
C++
的
dll
文件相关内容。包括
C#
和
C++
端
调用
类的
dll
文件的代码,如被
调用
类的头文件、实现文件,封装成
dll
的头文件和实现。还涉及使用委托
调用
,以及结构体和结构体
数组
参数的传入传出,包含cpp端和
C#
端的定义与
调用
代码。
C#
111,129
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章